Chapter 2. Building from source

Table of Contents

2.1. Getting started
2.1.1. Which tools do I need to build ArgoUML?
2.1.2. Which tools are part of the ArgoUML development environment?
2.1.3. What libraries are needed and used by ArgoUML?
2.2. Download from the CVS repository
2.3. Build Process
2.3.1. How ANT is run from the ArgoUML development environment
2.3.2. Generating documentation
2.3.3. Troubleshooting the development build
2.4. The JUnit test cases
2.4.1. How to write a test case
2.5. Manual Test Cases
2.5.1. Running the manual tests
2.5.2. Writing the manual tests
2.5.3. The list of tests
2.6. Making a release
2.6.1. The release did not work

If you are in a hurry:

C:\Work>set CVSROOT=:pserver:guest@cvs.tigris.org:/cvs
C:\Work>cvs login   (use guest as password)
C:\Work>cvs checkout argouml/src_new argouml/tools argouml/lib
C:\Work>set JAVA_HOME=C:\Programs\jdkwhatever
C:\Work>cd argouml\src_new
C:\Work\argouml\src_new>build run

A window from the newly compiled ArgoUML opens after a while!

That was the compact version for Windows + JDK. (Note: JDK cannot be installed in a directory that contains space in its name.)

If you don't understand this or it doesn't work read the rest of the chapter that describes why and how in more detail.

2.1. Getting started

In order to develop with ArgoUML it is absolutely mandatory to get the CVS version of ArgoUML. How this is done is described in Download from the CVS repository.

Notice that the CVS contents is not only a set of source files but instead it is the complete development environment for all work within the ArgoUML project.

2.1.1. Which tools do I need to build ArgoUML?

These are the tools not included in the CVS repository that you need to work with ArgoUML.

  • A computer with a free disk space for your work.

    100MB is enough to download everything from the repository. (Currently March 2003 it is 68MB). 150MB is enough to download all and build the tool and the documentation. (Currently March 2003 it is 114MB). 250MB is enough to build it all (javadocs, documentation, classes, packages, ...).

  • CVS for getting the files and committing source code updates.

  • JDK, at least version 1.3 (includes the Java compiler)

2.1.2.  Which tools are part of the ArgoUML development environment?

These tools are provided by the development environment that you get when you check out from CVS.

  • ANT, the tool to manage compiling and packaging.

  • ANTLR, for regenerating the built-in parser.

  • JUnit, for running the JUnit test cases.

  • JDepend, for examining the code.

For building the documentation from docbook format, these tools are also provided with the development environment that you get when you check out from CVS.

  • saxon for building documentation from docbook format.

  • Docbook XSL style sheets.

  • fop for generating PDF versions of the docbook format.

    To build a PDF file with the pictures included you need Jimi.

2.1.3. What libraries are needed and used by ArgoUML?

These libraries are provided in the development environment that you get when you check out CVS. They are checked by the Java compiler when compiling, needed for running ArgoUML and therefore distributed with ArgoUML.

  • NSUML, the Novosoft UML library.

    ArgoUML project doesn't include the developing of Java classes for the purpose of storing, saving and loading an UML Model. That work is done by NSUML and is used by ArgoUML.

  • GEF graph editing framework, available from gef.tigris.org.

    It is also recommended that you check out GEF at the same time as you check out ArgoUML because many things in Argo relate to GEF and it is quite handy to have the source code available. GEF is also residing at Tigris so you can do a simple cvs -d :user@cvs.tigris.org:/cvs co gef (with the same checkout arguments you had when you checked out ArgoUML) to get it.

  • The OCL package to parse and run the Object Constraint Language things.

    Details about the package are available from SourceForge OCL Compiler.

  • log4j, a library with infrastructure for logs.

  • antlrall, the run-time part of the ANTLR tool.