Java Artifacts

Each java source directory is compiled either into a "public" jar which is included into the classpath of dependent modules, or a "private" jar which is not included. Public source directories include "src", "build/gen-src" and "build/regen-dao". Private source directories include "private-src", "test-src" and "build/private-gen-src". All classes are globally available at run time, but from a compile standpoint, you won't be able to compile a dependent module against private APIs (unless certain explicit exceptions are made - see the section called “Include Private API” for details).

All MPT-related java artifacts like callback classes, workflow classes and issue classes will be created in the private-src directory of the module by default. (In Platform releases prior to 8.3, all these artifacts were generated in the public src directory by default.) You can move these artifacts to the src directory if you want to make these public; the server will recognize either location at run-time.

src and private-src

  • src: All resources in the src directory will be compiled to a "public" jar for the module in the Platform Server. These will be automatically added to the classpath of dependent modules.

  • private-src: All resources in the private-src directory will be compiled to the "private" jar for the module in the Platform Server. These will not be automatically added to the classpath of the dependent module.

Java classes in the src directory will always be compiled before any private-src or test-src. As a result, you must not reference any private-src or test-src classes from src. This is enforced by the ant build; if you do add a reference from src to private-src or test-src, it will be flagged as a compile error on your next clean build.

test-src

For backward compatibility reasons, all resources in the test-src directory of your module will be public and compiled to the public jar in Platform Server. You can mark the resources of test-src "Private" using module-descriptor.xml.

If the "Private Tests" flag is set in module-descriptor.xml, test-src resources will be compiled to a separate "test" jar in the Platform Server and will not be available to dependent modules.