Using the Object Teams Parent POM

Declaring this module as the parent of your project will add basic capabilities for using OT/J in your sources.

Weaving schemes OTRE vs. OTDRE

This pom supports the traditional weaving scheme OTRE. For OTDRE please use org.eclipse.objectteams:objectteams-otdre-parent-pom instead.

Note: Due to limitations of the used version of BCEL (see below) the OTRE weaver is unable to process class files that have been compiled for Java 8.

Include the parent pom

For simple cases two declarations in your pom will suffice:

  1. declare the maven repository for fetching Object Teams related modules
                            <name>Object Teams Repository</name>
  2. declare the parent pom

    Starting with version 2.1.1 the parent pom also supports using OT/J in tycho builds (projects using OSGi).


See the objectteams-compile-test project for an example of how to use this parent pom.

Under the hood

Standard OT/J dependencies documented

All OT/J projects using the objectteams-parent-pom implicitly depend on the following artifacts which are developed independent of maven and simply repackaged using the org.eclipse.objectteams:objectteams-artifact-deployer module:

the Object Teams runtime (minimal OT/J API) repackaged from the org.eclipse.objectteams.runtime OSGi bundle.
the Object Teams Runtime Environment (the bytecode weaver) repackaged from the org.eclipse.objectteams.otre OSGi bundle.
the Java agent that hooks the Object Teams runtime into the JVM (repackaged from file otre_agent.jar from the org.eclipse.objectteams.otdt project).
a compatible replacement for org.eclipse.tycho:org.eclipse.jdt.core that enables the org.eclipse.tycho:tycho-compiler-jdt plugin to compile OT/J sources.

The following module is indirectly used:

the original apache bcel Byte Code Engineering Library. Object Teams still uses the version 5.2 which is incompatible with the byte code of Java 8. Due to the lack of support for rewriting stack map tables, however, a migration to the current version 6 of BCEL would not make the weaver Java 8 compatible, as a Java 8 VM no longer tolerates class files without this attribute.