MuleForge Project Repositories
Every MuleForge project has its own Subversion repository for holding source code, M2 repository for holding Maven artifacts, and an M2 Snapshot repository for holding Maven artifacts related to snapshots.
Build Standard
Maven is the standard build tool for MuleForge. New projects are currently being built using version 2.0.8. However, most MuleForge projects (mainly those created before 2008) are still using version 2.0.7.
 | Maven 2.0.6 or higher is required for all MuleForge projects. |
Source Code Repository
The standard project directory structure for MuleForge adheres to the Maven Standard Directory Layout.
Depicted below is the layout of the directory structure of a newly created MuleForge project. These are found in the Subversion repository of the project.
/trunk
/trunk/pom.xml
/trunk/settings.xml
/trunk/src
/trunk/src/main
/trunk/src/main/java
/trunk/src/main/resources
/trunk/src/test
/trunk/src/test/java
/trunk/src/test/resources
/trunk/dist
/trunk/dist/assembly.xml
/trunk/dist/pom.xml
/trunk/dist/settings.xml
Older projects used to include an examples directory as shown below. The examples directory has always been optional. You may include it if you have examples that enhance your project, otherwise it is unnecessary.
/trunk/examples
/trunk/examples/src
/trunk/examples/src/main
/trunk/examples/src/main/java
/trunk/examples/src/main/resources
The table below gives a description of each file and each important directory.
| Directory |
Required? |
Description |
| /trunk |
Yes |
By default, the root of each project contains the top-level directory: trunk. It hosts the main line of development. |
| /trunk/pom.xml |
Yes |
Maven POM file. Builds source in /src/main/java and declares dependencies. |
| /trunk/settings.xml |
No |
The repositories for deployment are defined in the <distributionManagement> section of /trunk/pom.xml. However, settings such as username and password are set here. Generally by the despot when doing a project release. |
| /trunk/src/main/java |
No, but highly recommended |
Project Java source. Includes Java artifacts such as Mule Connectors, Receivers, Dispatchers, Components, Transformers, Interceptors, etc. Read the General Code Conventions to learn about the Java coding standards used in the Mule project. |
| /trunk/src/main/resources |
No, but highly recommended |
Project resources used by Java source. Includes properties, configurations, localization bundles, etc. |
| /trunk/src/test/java |
No |
Test Java sources. For info on how to test Mule, read Functional Test Cases and Mule Test Compatibility Kit |
| /trunk/src/test/resources |
Used in conjunction with test sources above |
Resources used by test sources. |
| /trunk/dist/ |
Yes |
Resources for building the distribution zip or tar file. The distribution contains the built project jar file, example scripts/configurations, and 3rd party library dependencies. |
| /trunk/dist/pom.xml |
Yes |
Builds the distribution zip file and declares dependencies. |
| /dist/assembly.xml |
Yes |
Specifies contents of zip file and 3rd party libraries to be included in zip. |
| /dist/settings.xml |
No |
The repositories for deployment are defined in the <distributionManagement> section of the /trunk/dist/ pom.xml. However, settings such as username and password are set here by the despot when doing a project release. |
| /trunk/examples |
No |
An optional examples directory. |
| /trunk/examples/src/main/java |
No |
Example Java sources. |
| /trunk/examples/src/main/resources |
No |
Resources used by example sources. |
All MuleForge projects should follow the Project Repository and Directory Structures specified above.
There should be no third party libraries checked into the project's SVN repository. Dependencies should be declared in the POMs instead.
If you are including an example within /trunk/examples/, then write a POM file: /trunk/examples/pom.xml, to build the Java source of the example project in /trunk/examples/src/main/java.
A 'Branches' directory and a 'Tags' directory may be added to the root of the project as necessary.