This Maven plug-in lets you weave the OT/J class files of a project, so that the re-written class files can be executed without the Object Teams load-time weaver.
The load-time weaver is the preferred way to run OT/J programs if available. Currently this is supported for
On other platforms, you either have to integrate the load-time weaver into the existing class loading mechanism, or: use the built-time weaver to create a static set of classes ready to run with no further infrastructure.
To enable this plug-in add the pluginGroup "org.eclipse.objectteams" to your maven settings.
For general information on compiling OT/J programs with Maven see Using the Object Teams Parent POM
Here is a typical pom that compiles OT/J sources and weaves them using the objectteams-weaver:weave goal.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.eclipse.objectteams</groupId> <artifactId>objectteams-parent-pom</artifactId> <version>2.2.0</version> </parent> <artifactId>OTStopwatch_Built-Time_Weaver_Example</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <tycho.version>0.18.0</tycho.version> <otj.version>2.2.0</otj.version> </properties> <build> <plugins> <plugin> <groupId>org.eclipse.objectteams</groupId> <artifactId>objectteams-weaver-maven-plugin</artifactId> <version>0.8.0-SNAPSHOT</version> <executions> <execution> <goals> <goal>weave</goal> </goals> </execution> </executions> <configuration> <teamClasses> <teamClass>org.eclipse.objectteams.example.stopwatch.WatchUI</teamClass> <teamClass>org.eclipse.objectteams.example.stopwatch.WatchUIAnalog</teamClass> </teamClasses> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>ObjectTeamsRepository</id> <name>Object Teams Repository</name> <url>http://download.eclipse.org/objectteams/maven/3/repository</url> </repository> </repositories> </project>
The plugin can further be configured via a build.plugins.plugin.configuration block. The following properties can be used:
Parameter | Type | Description | Default |
teamClasses | list of class names | qualified names of all teams to weave | no default / required |
activeTeamClasses | list of class names | qualified names of teams to activate at program start | no default / optional |
mainClass | class name | qualified name of the main class | no default / required if activeTeamClasses is set |
wovenClassDirectory | path (string) | output directory for woven classes | target/woven-classes |