The JPOX code is structured as (Maven) projects. There are several projects. The first is JPOX "Core", which is
the JDO implementation. Then we have JPOX "Enhancer", the byte-code enhancer. We also have JPOX "Eclipse plugin",
and JPOX "IDE", and one or two others. These are described below.
The file structure for the top-level project is shown below.
- JPOX - This contains the JPOX subprojects.
- Core/ - The JPOX Core functionality sub-project.(see below)
- Enhancer/ - This contains the JPOX's bytecode enhancer sub-project. (see below)
- IDE/ - This contains a SWING based IDE for JPOX. This sub-project is no longer under development
- IDE_Eclipse/ - This contains a Eclipse based IDE for JPOX. (see below)
- Plugins/ - This contains sub-projects that extends JPOX functionality.
- C3P0/ - This contains the C3P0 plugin for JPOX connection poolling.
- DBCP/ - This contains the DBCP plugin for JPOX connection poolling.
- Ehcache/ - This contains the Ehcache plugin for JPOX cache.
- Java5/ - This contains the Java 5 plugin adding Java 5 types support to JPOX.
- JPOXTest/ - This contains the Maven1 plugin for JPOX Persistence Tests.
- Maven1/ - This contains the Maven1 plugin for JPOX.
- Maven1-FAQ/ - This contains the Maven1 FAQ plugin for use by JPOX.
- Maven2/ - This contains the Maven2 plugin for JPOX.
- Multidimensional/ - This contains the Multidimensional plugin for JPOX.
- OSCache/ - This contains the OSCache plugin for JPOX cache.
- Proxool/ - This contains the Proxool plugin for JPOX connection pooling.
- Spatial/ - This contains the Spatial plugin for JPOX.
- SpatialOracle/ - This contains the SpatialOracle plugin adding support to spatial Oracle types for JPOX.
- SpringFramework/ - This contains the SpringFramework plugin.
- SwarmCache/ - This contains the SwarmCache plugin for JPOX cache.
- TangosolCache/ - This contains the TangosolCache plugin for JPOX cache.
- ThirdParty/ - This contains stubs to 3rd party (commercial) API products.
- XMLTypeOracle/ - This contains the XMLTypeOracle plugin adding support to XMLType Oracle type for JPOX.
- TestFramework/ - framework for tests, used by Core, Java5, etc
- samples/ - This contains a series of code snippets demonstrating how to use the various aspects of JPOX.
- src/ - This folder is no longer in use.
- website/ - This contains the JPOX's website.
- workspace/ - This contains developer's workspace that wants to backup local changes not yet committed to projects. To use rarely.
- xdocs/ - This contains the documentation for JPOX. The majority of this is in XML format, and is converted (to HTML) by Maven when generating the website.
- LICENSE.txt - This contains the license definition for JPOX - the Apache 2 license.
- NOTICE.txt - Copyright notice for JPOX with list of all those who retain copyright to parts of JPOX.
- README - This contains basic information about the JPOX project and is included with any JAR's, directing the user to the license terms and conditions.
- README.jpox - This file contains information about the layout of the JPOX subprojects.
- checkstyle.xml - This is used by the Checkstyle application and reinforces the coding standards used on the project.
- maven.xml - This is used when building JPOX using Maven, and configures the Maven goals to link as we require.
- project.properties - This is used when building JPOX using Maven, and defines controls for the various Maven plugins used.
- project.xml - This is used by Maven and defines the JPOX projects as a whole.
As you have maybe guessed from the above file structure, JPOX core can be built using either Maven (the preferred option,
for me anyway :-)), or Ant, or Eclipse, or ... . So you have the choice
The Core project provides the main JPOX functionality. It is the base requirement for the other sub-projects.
This provides the artifact jpox-{version}.jar. The file structure for this project is shown below
- README.build - This contains basic information about the JPOX-Core project and is included with any JAR's, directing the user to the license terms and conditions.
- project.properties - This is used when building JPOX-Core using Maven, and defines controls for the various Maven plugins used.
- project.xml - This is used when building JPOX-Core using Maven, and is the main project definition for JPOX-Core
- src/java/ - This contains the source code for JPOX-Core.
- src/test/ - This contains the source code for the JPOX-Core test suite (JUnit tests).
- build.xml - Control file used when building JPOX Core using Ant.
- build.properties - Control file used when building JPOX Core using Ant.
- test.properties - File defining the tests to be run in the various different test scenarios for end-to-end testing.
The JPOX-Core project is built using Maven, or Ant.
The Enhancer project provides the JPOX Enhancer. It is dependent on JPOX "core". This provides the artifact jpox-enhancer-{version}.jar. The file structure for this project is shown below
- README - This contains basic information about the JPOX-Enhancer project and is included with any JAR's, directing the user to the license terms and conditions.
- project.properties - This is used when building JPOX-Enhancer using Maven, and defines controls for the various Maven plugins used.
- project.xml - This is used when building JPOX-Enhancer using Maven, and is the main project definition for JPOX-Enhancer.
- src/java/ - This contains the source code for JPOX-Enhancer, the JPOX byte-code Enhancer.
- src/test/ - This contains the source code for the JPOX-Enhancer test suite (JUnit tests).
The JPOX-Enhancer project is built using Maven.
The IDE project provides an integrated development environment for generating the necessary persistence specifications for using JPOX. This provides the artifact jpox-ide-{version}.jar. The file structure for this project is shown below
- README - This contains basic information about the JPOX-IDE project and is included with any JAR's, directing the user to the license terms and conditions.
- README.build - This file contains information about how to build JPOX-IDE using Maven.
- project.properties - This is used when building JPOX-IDE using Maven, and defines controls for the various Maven plugins used.
- project.xml - This is used when building JPOX-IDE using Maven, and is the main project definition for JPOX-IDE.
- src/conf/ - This contains anything that is required by the IDE at runtime (e.g images).
- src/java/ - This contains the source code for JPOX-IDE, the JPOX integrated development environment.
- src/test/ - This contains the source code for the JPOX-IDE test suite (JUnit tests).
The JPOX-IDE project is built using Maven. This sub-project is no longer under development
The Eclipse IDE project provides an Eclipse integrated development environment for generating the necessary persistence specifications for using JPOX. This provides the artifact org.jpox.ide.eclipse.jdo_{version}.jar. The file structure for this project is shown below
- build.properties - This is used by eclipse when building the plugin.
- plugin.xml - This is used by eclipse to plug components into its environment.
- src/java/ - This contains the source code for JPOX-IDE_Eclipse.
The JPOX-IDE_Eclipse project is built using Eclipse.