Getting the sources and building JonDo
The sources of JonDo are available in two subversion repositories. The main repository ist hosted by JonDos GmbH. TU Dresden offers a backup repository.
JonDo consists of 4 components:
- anonlib: base library for JonDo
- Subversion repository hosted by JonDos GmbH: https://svn.jondos.de/svn/anonlib/anonlib/trunk
- Subversion repository hosted by TU Dresden: https://subversion.inf.tu-dresden.de/svn/anonlib/anonlib/trunk
- Browse the sources online at: http://anon.inf.tu-dresden.de/develop/doc/anonlib/
- guilib: the GUI library of JonDo
- Subversion repository hosted by JonDos GmbH: https://svn.jondos.de/svn/guilib/guilib/trunk
- Subversion repository hosted by TU Dresden: https://subversion.inf.tu-dresden.de/svn/guilib/guilib/trunk
- logginglib: library with logging functions
- Subversion repository hosted by JonDos GmbH: https://svn.jondos.de/svn/logginglib/logginglib/trunk
- Subversion repository hosted by TU Dresden: https://subversion.inf.tu-dresden.de/svn/logginglib/logginglib/trunk
- JAP: the JonDo application
- Subversion repository hosted by JonDos GmbH: https://svn.jondos.de/svn/Jap/Jap/trunk
- Subversion repository hosted by TU Dresden: https://subversion.inf.tu-dresden.de/svn/Jap/Jap/trunk
- Browse the sources online at: http://anon.inf.tu-dresden.de/develop/doc/jap/
A Java-JDK (Sun-Java6 or OpenJDK6) and the tools ant and maven2 are needed to build JonDo. It is only required to check out JAP (4.). All required Java libraries will be downloaded and compiled by the build tool maven2.
cd JAP/trunk mvn package
After a successful build process, you will find the JAR files with and without dependencies in the subdirectory target/. You might want to rename them and start JonDo as usually:
java -jar JAP.jar
Adding new features to JonDo
If you want to play with the code or fix some bugs or even add some new features then just do the following. Choose the relevant library and there the proper source file and implement your changes. Afterwards go to the /trunk directory of the library (where the pom.xml) is located and run:
Then go to the /jap/trunk directory and run again
in order to incorporate your new code into the JonDo. This seems quite easy and, indeed, it is provided you avoid some pitfalls:
- Depending on which library your are editing it can be that you have to run "mvn install" in other libraries (and there in the respective /trunk directory) as well in order to get your changes activated. For instance, if you change some code in the anonlib, then it is not enough to run "mvn install" only in its /trunk directory but you have to run it in the guilib /trunk directory as well before you run "mvn package". The reason is that jap does not directly depend on the anonlib but on the guilib which in turn depends directly on the anonlib. Thus, without running "mvn install" in the guilib /trunk directory there is a fair chance that an old version of the guilib-library will be used if you are building JonDo, one which does not have your changes included. Therefore, ist is important to check the dependencies in the respective pom.xml files (at least once) before building jap. There is an amount of dependency-tags there which shows the direct dependencies of each library.
- Now that you are aware of all the dependencies there still can go something wrong. The version of the library you improved must match the version used by jap directly or indirectly. Thus, let's suppose again that you have changed the anonlib which has version 00.12.015 now (see the version-tag in the respective pom.xml). Suppose further, the guilib uses version 00.12.014 of the anonlib, i.e. depends on version 00.12.014 of this library (see the respective version-tag within the dependency-tag of the guilib pom.xml). In this case your changes won't be used by "mvn package" even if you ran "mvn install" on both the anonlib and the guilib. Therefore, keep in mind to adjust the library's version in the libraries which directly depend on it (that means editing their pom.xml files) to the one your changed library actually has.