- Project tools
-
-
- Using ArgoUML
-
- The ArgoUML Project
-
- Nightly builds of docs
-
- The Stats Project
-
- How do I...
-
| Category |
Featured projects |
| scm |
Subversion,
Subclipse,
TortoiseSVN,
RapidSVN
|
| issuetrack |
Scarab |
| requirements |
xmlbasedsrs |
| design |
ArgoUML |
| techcomm |
SubEtha,
eyebrowse,
midgard,
cowiki |
| construction |
antelope,
scons,
frameworx,
build-interceptor,
propel,
phing
|
| testing |
maxq,
aut
|
| deployment |
current |
| process |
ReadySET |
| libraries |
GEF,
Axion,
Style,
SSTree
|
| Over 500 more tools... |
|
The development environment (source layout) of ArgoUML exists in two flavors:
The repository layout. The Eclipse layout.
The repository layout is used
by the nightly build,
when building releases, and
when doing development that is not done within Eclipse.
This is the traditional layout and the checkout procedure is described in
Section 2.5, “Downloading from the Subversion repository”.
The Eclipse layout is used when doing development within Eclipse.
This was created to fit with Eclipse way of organizing projects.
The checkout procedure is described in
Section 2.9.3, “Checking out through Eclipse” and controlled by Eclipse psf files.
The table below show how the code is organized in the different layouts.
Table 2.1. Layout differences | Code | Repository location | The repository layout | The Eclipse layout |
|---|
| Subsystems |
http://argouml.tigris.org/svn/argouml/
trunk/src/SUBSYSTEM-NAME
| WORK/argouml/src/SUBSYSTEM-NAME | WORKSPACE/SUBSYSTEM-NAME | | Integration scripts for the core application |
http://argouml.tigris.org/svn/argouml/
trunk/src/argouml-build/* | WORK/argouml/src/argouml-build/* | WORKSPACE/argouml-build/* (optional) | | Subsystems that are separate projects |
http://PROJECT-NAME.tigris.org/svn/PROJECT-NAME/
trunk | WORK/PROJECT-NAME | WORKSPACE/PROJECT-NAME | | Integration result | N/A | WORK/argouml/build or WORK/argouml/src/build? | N/A | |
Tools used for building and testing.
This is the tools common to several subsystems.
|
http://argouml.tigris.org/svn/argouml/
trunk/tools | WORK/argouml/tools | WORKSPACE/argouml-tools | | Tools used for release generation |
http://argoumlinstaller.tigris.org/
svn/argoumlinstaller/
trunk/* | WORK/argoumlinstaller/ | N/A | | Tools used for static checks |
http://argouml-gen.tigris.org/svn/argouml-gen/
trunk/tools | WORK/argouml-gen/tools | N/A ??? | | Documentation source |
http://argouml.tigris.org/svn/argouml/
trunk/documentation | WORK/argouml/documentation | WORKSPACE/argouml-documentation | | Eclipse psf files |
http://argouml.tigris.org/svn/argouml/
trunk/www/psf | WORK/argouml/www/psf (not used) | WORKSPACE/psf | | Eclipse templates (to use in the workspace or import into each project) |
http://argouml.tigris.org/svn/argouml/
trunk/tools/eclipse | WORK/argouml/tools/eclipse (not used) | WORKSPACE/argouml-core-tools/eclipse | | Tools used for static checks |
http://argouml-gen.tigris.org/svn/argouml-gen/
trunk/tools | WORK/argouml-gen/tools | N/A ??? | | Src of released subsystem from core project |
http://argouml.tigris.org/svn/argouml/
releases/RELEASE-TAG/src/SUBSYSTEM-NAME | WORK/argoumlinstaller/build/RELEASE-TAG/argouml/src/SUBSYSTEM-NAME | N/A or WORKSPACE/SUBSYSTEM-NAME (if switched to) | | Src of released subsystem from other project |
http://PROJECT-NAME.tigris.org/svn/PROJECT-NAME/
releases/RELEASE-TAG | WORK/argoumlinstaller/build/RELEASE-TAG/PROJECT-NAME/ | N/A or WORKSPACE/PROJECT-NAME (if switched to) |
To handle the two layouts the following guidelines for writing
ant scripts apply:
The same build.xml file is used, both for building from ant in
the repository layout and in the Eclipse layout.
In
argouml/src/subsystem/build.xml
use
../subsystem/build/name
to refer to files needed to compile and run tests.
Only references to subsystems depended on are allowed.
Table 2.2. Allowed subsystem dependencies | Project | Depends on (only) |
|---|
| argouml-core-model-mdr | argouml-core-infra, argouml-core-model | | argouml-core-model-euml | argouml-core-infra, argouml-core-model | | argouml-app | argouml-core-infra, argouml-core-model (+
argouml-core-model-mdr but only for integration-level tests)
| | argouml-core-diagrams-sequence2 | argouml-core-infra, argouml-core-model, argouml-app
| | all other diagram subsystems | argouml-core-infra, argouml-core-model, argouml-app
|
The "jar" target in
argouml/src/subsystem/build.xml
compiles the code,
creates the directory
build within
subsystem, and
copies all exported jars there.
Since this build depends on jars in depended on subsystems,
the target should first run the "jar" target in those subsystems.
Also jars that are not generated but provided by the subsystem are copied.
In the repository layout, the "package" target in
argouml/src/argouml-build/build.xml
compiles all subsystems,
creates the directory
build in
argouml/src/argouml-build
and copies all exported jars from all subsystems there.
The copying only copies files and not directories.
For that reason make sure everything that is exported is in files
and everything that is not exported in directories.
Specially generated java files,
the class files as results of the compilation of source and tests,
test results,
javadoc report, and
other generated reports
shall be generated in directories to avoid being included in the release.
In the Eclipse layout, the "package" target in
argouml-build/build.xml (same as above)
compiles all subsystems,
creates the directory
../argouml/build
and copies all exported jars from all subsystems there.
For this reason no Eclipse project shall be named "argouml".
For Modules that are developed in separate Tigris projects
in the
argouml-name/build.xml file
use
../argouml/build/name
to refer to files needed to compile and run tests.
Only references to subsystems depended on are allowed.
Modules should probably depend on
argouml-core-infra,
argouml-core-model, and
argouml-app
and not anything else.
The "jar" target in
argouml-name/build.xml
compiles the code,
creates the directory
argouml-name/build, and
copies all exported jars there.
The "install" target in
argouml-name/build.xml
performs the "jar" target and
copies all jars needed by the deployed application to
../argouml/build/ext.
The release script includes the files from there.
For the listed purposes, use the paths listed in the table,
in all subsystems and modules.
Table 2.3. Created things | What | Where (under ./build) |
|---|
Result of the compilation of
src/tree and
build/java/tree
| classes/tree |
Result of the compilation of
tests/tree
|
tests/classes/tree
| | Generated java code | java/tree | | XML result from tests |
tests/reports/junit/output/XML-files
| | HTML result from tests |
tests/reports/junit/output/html/HTML-files
| | Complete javadoc report | javadocs | | Javadoc report exported functions only | api |
Instrumented classes from build/classes/tree
|
instrumented/tree
|
Tools that reside in the tools directory are referenced using the property
argo.tools.dir.
Like this: ${argo.tools.dir}/path to the file
The tools in question are the tools
used for build and testing that are common to several subsystems.
Every build.xml file that uses tools from the tools directory
shall set the argo.tools.dir property.
This is done by testing for the existance of the
candidate-dir/checkstyle/java.header
file and the result should be set to:
../../tools for subsystems in the repository layout.
../argouml-core-tools for subsystems in the Eclipse layout.
../../tools for argouml-build in the repository layout.
../argouml-core-tools for argouml-build in the Eclipse layout.
../tools for documentation in the repository layout.
../argouml-core-tools for documentation in the Eclipse layout.
../argouml/tools for other Tigris projects in the repository layout.
../argouml-core-tools for other Tigris projects in the Eclipse layout.
|