Pentaho Project Anatomy

<WORKSPACE>/my-pentaho-proj
my-pentaho-proj/
|-- eclipse-bin
|-- bin
|   |-- classes
|   |-- javadoc
|   |-- reports
|   |   |-- cobertura
|   |   |   |-- html
|   |   |   `-- xml
|   |   `-- test
|   |       |-- html
|   |       `-- xml
|   `-- test
|       |-- classes
|       |-- cobertura-bin
|       `-- instrumented-classes
|-- dev-lib
|-- dist
|-- lib
|-- src
|-- test-src
`-- test-lib

Sources

  • src - Application source code
  • test-src - Test source code

Libs

  • lib - Directory where IVY will deposit "default" (compile-time) dependencies, when it is asked to retrieve them (ant resolve-default).
  • test-lib - Directory where IVY will deposit "test" dependencies, e.g. junit4.jar, when it is asked to retrieve them (ant resolve-test).
  • dev-lib - non-IVY directory where developer can temporarily link jars into the project. Common build will look for jars in dev-lib and include them in the build.
    (warning) dev-lib should never be committed to SVN!

    When developing with the IVY Eclipse plugin, ivyDE, IVY-populated lib directories are ignored. Your Eclipse project will reference jars outside of the project space, in .ivy2/cache.

Notable Files

  • build.xml - Ant build file for the Pentaho project. This build file includes the common_build.xml and defines any project specific build functionality.
  • common_build.xml - Standardized Ant build file for all Pentaho projects
  • ivy.xml - Defines all the dependencies for the Pentaho project.

Distributable Archives

  • dist - Archive files produced by the build are placed in dist, this would include .jar, .zip, .tar.gz, .war, .ear, etc.

All Other Build Output

Build output has typically been placed in mix of hierarchical and flat directories from the project root. In an effort to tidy up the project workspace, bin has been reorganized to become the root of the hierarchy of all (non-archive) build output.

  • bin/classes - Classes compiled from project application source code are placed here. (warning) Compiled classes used to be placed directly in bin, keep that in mind if you run into strange behavior such as incorrect jar content from your custom build scripts.
  • bin/test - Root directory for any resources that may be needed to run unit tests, such as compiled test code and instrumented application source code (for code coverage tools)
  • bin/reports - Root directory for all kinds of reports the build might generate about the project, e.g. JUnit test reports, Cobertura or Clover coverage reports, FindBugs static analysis reports.
  • bin/javadoc - Javadoc html is placed here for browsing (javadoc may also be archived as a zip or targz in which case the archive would be placed in dist).

eclipse-bin - Eclipse will place compiled java classes here as opposed to bin which is reserved for the Ant-based build. The two are kept separate so Eclipse will not compete with Ant.