Difference between revisions of "Acceleo/Maven"

From Eclipsepedia

Jump to: navigation, search
m (Releases Notes)
(6 intermediate revisions by one user not shown)
Line 5: Line 5:
  
 
== Maven Hosting ==
 
== Maven Hosting ==
The artifacts necessary for the build are currently hosted on github while we are waiting for the right to upload them on the maven repository of the Eclipse Foundation. https://bugs.eclipse.org/bugs/show_bug.cgi?id=377603
+
The Acceleo artifacts and their stand alone dependencies are now hosted on repo.eclipse.org
 
+
New repositories may appear in the upcoming months.
+
  
 
== Releases Notes ==
 
== Releases Notes ==
 +
=== 2014/01/20 ===
 +
* The Acceleo artifacts are now hosted on repo.eclipse.org along with the maven plugin. They are now built as part of the Acceleo nightly build.
 +
* The artifactId of the maven plugin has been modified to org.eclipse.acceleo.maven to match all the other Acceleo artifacts
 +
* The hosting on raw.github.com is now deprecated!
 +
 
===2012/09/7===
 
===2012/09/7===
 
* Fixing the possible ClassCastException with multiple generators built in a single maven build.
 
* Fixing the possible ClassCastException with multiple generators built in a single maven build.
Line 65: Line 68:
 
* <span style="font-weight:bold">packagesToRegister</span> - The name of the Java class that should be used to register the package on which the generation is launched.
 
* <span style="font-weight:bold">packagesToRegister</span> - The name of the Java class that should be used to register the package on which the generation is launched.
 
* <span style="font-weight:bold">uriHandler</span> - An AcceleoURIHandler used to convert the URI of the dependencies (if you want a different behavior than the usePlatformResourcePath). The default URI handler provided (org.eclipse.acceleo.maven.AcceleoURIHandler), does the same job as the option usePlatformResourcePath.
 
* <span style="font-weight:bold">uriHandler</span> - An AcceleoURIHandler used to convert the URI of the dependencies (if you want a different behavior than the usePlatformResourcePath). The default URI handler provided (org.eclipse.acceleo.maven.AcceleoURIHandler), does the same job as the option usePlatformResourcePath.
 +
* <span style="font-weight:bold">failOnError</span> - Indicates if the compilation should fail if errors are found (true by default).
  
 
== Stand Alone ==
 
== Stand Alone ==
Launch this with the following command: mvn clean org.eclipse.acceleo:maven:3.2.1:acceleo-compile compile verify
+
Launch this with the following command: mvn clean org.eclipse.acceleo:org.eclipse.acceleo.maven:3.5.0-SNAPSHOT:acceleo-compile compile verify
  
 
* example: http://git.eclipse.org/c/m2t/org.eclipse.acceleo.git/tree/tests/org.eclipse.acceleo.maven.tests
 
* example: http://git.eclipse.org/c/m2t/org.eclipse.acceleo.git/tree/tests/org.eclipse.acceleo.maven.tests
Line 82: Line 86:
  
 
     <groupId>org.eclipse.acceleo</groupId>
 
     <groupId>org.eclipse.acceleo</groupId>
     <artifactId>maven-test</artifactId>
+
     <artifactId>org.eclipse.acceleo.maven-test</artifactId>
     <version>3.2.1</version>
+
     <version>3.5.0-SNAPSHOT</version>
 
     <packaging>jar</packaging>
 
     <packaging>jar</packaging>
 
     <name>org.eclipse.acceleo.maven.tests</name>
 
     <name>org.eclipse.acceleo.maven.tests</name>
Line 89: Line 93:
  
 
The repositories to use for the dependencies of this project (ex: org.eclipse.uml2.uml).
 
The repositories to use for the dependencies of this project (ex: org.eclipse.uml2.uml).
 
 
     <repositories>
 
     <repositories>
 
       <repository>
 
       <repository>
         <id>Indigo Release</id>
+
         <id>Eclipse - Acceleo Snapshots</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/indigo</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
      </repository>
+
      <repository>
+
        <id>Juno Release</id>
+
        <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/juno</url>
+
 
       </repository>
 
       </repository>
 
       <repository>
 
       <repository>
         <id>Snapshots</id>
+
         <id>Eclipse - Acceleo Release</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/snapshots</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
 
       </repository>
 
       </repository>
 
     </repositories>
 
     </repositories>
Line 109: Line 108:
 
     <pluginRepositories>
 
     <pluginRepositories>
 
       <pluginRepository>
 
       <pluginRepository>
         <id>Indigo Release</id>
+
         <id>Eclipse - Acceleo Snapshots</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/indigo</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
 
       </pluginRepository>
 
       </pluginRepository>
 
       <pluginRepository>
 
       <pluginRepository>
         <id>Juno Release</id>
+
         <id>Eclipse - Acceleo Release</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/juno</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
      </pluginRepository>
+
      <pluginRepository>
+
        <id>Snapshots</id>
+
        <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/snapshots</url>
+
 
       </pluginRepository>
 
       </pluginRepository>
 
     </pluginRepositories>
 
     </pluginRepositories>
Line 124: Line 119:
 
The dependencies used to build. Here, the Acceleo maven plugin, the two plugins needed for the UML meta-model and log4j.
 
The dependencies used to build. Here, the Acceleo maven plugin, the two plugins needed for the UML meta-model and log4j.
  
     <dependencies><span style="color:#FF40C6">
+
     <dependencies><span style="color:#1B9AF7">
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.acceleo</groupId>
 
         <groupId>org.eclipse.acceleo</groupId>
         <artifactId>maven</artifactId>
+
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.2.1</version>
+
         <version>3.5.0-SNAPSHOT</version>
       </dependency></span>
+
       </dependency>
 +
      <dependency>
 +
        <groupId>org.eclipse.acceleo</groupId>
 +
        <artifactId>org.eclipse.acceleo.engine</artifactId>
 +
        <version>3.5.0-SNAPSHOT</version>
 +
      </dependency>
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.uml2</groupId>
 
         <groupId>org.eclipse.uml2</groupId>
         <artifactId>uml</artifactId>
+
         <artifactId>org.eclipse.uml2.uml</artifactId>
         <version>3.2.1</version>
+
         <version>4.1.1.v20130902-0826</version>
 
       </dependency>
 
       </dependency>
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.uml2</groupId>
 
         <groupId>org.eclipse.uml2</groupId>
         <artifactId>common</artifactId>
+
         <artifactId>org.eclipse.uml2.types</artifactId>
         <version>1.6.0</version>
+
         <version>1.1.0.v20130902-0826</version>
 +
      </dependency>
 +
      <dependency>
 +
        <groupId>org.eclipse.uml2</groupId>
 +
        <artifactId>org.eclipse.uml2.common</artifactId>
 +
        <version>1.8.1.v20130902-0826</version>
 
       </dependency>
 
       </dependency>
 
       <dependency>
 
       <dependency>
Line 144: Line 149:
 
         <artifactId>slf4j-simple</artifactId>
 
         <artifactId>slf4j-simple</artifactId>
 
         <version>1.6.4</version>
 
         <version>1.6.4</version>
       </dependency>
+
       </dependency></span>
 
     </dependencies>
 
     </dependencies>
  
Line 153: Line 158:
 
         <plugin>
 
         <plugin>
 
           <groupId>org.eclipse.acceleo</groupId>
 
           <groupId>org.eclipse.acceleo</groupId>
           <artifactId>maven</artifactId>
+
           <artifactId>org.eclipse.acceleo.maven</artifactId>
           <version>3.2.1</version>
+
           <version>3.5.0-SNAPSHOT</version>
 
           <executions>
 
           <executions>
 
             <execution>
 
             <execution>
 
               <phase>compile</phase>
 
               <phase>compile</phase>
 
             </execution>
 
             </execution>
           </executions><span style="color:#FF40C6">
+
           </executions><span style="color:#1B9AF7">
 
           <configuration>
 
           <configuration>
 
             <useBinaryResources>false</useBinaryResources>
 
             <useBinaryResources>false</useBinaryResources>
Line 183: Line 188:
 
== Maven Tycho build ==
 
== Maven Tycho build ==
  
Launch this with the following command: mvn clean org.eclipse.acceleo:maven:3.2.1:acceleo-compile compile verify
+
Launch this with the following command: mvn clean org.eclipse.acceleo:org.eclipse.acceleo.maven:3.5.0-SNAPSHOT:acceleo-compile compile verify
  
 
* example: http://git.eclipse.org/c/m2t/org.eclipse.acceleo.git/tree/tests/org.eclipse.acceleo.maven.plugin.tests
 
* example: http://git.eclipse.org/c/m2t/org.eclipse.acceleo.git/tree/tests/org.eclipse.acceleo.maven.plugin.tests
Line 200: Line 205:
 
     <groupId>org.eclipse.acceleo</groupId>
 
     <groupId>org.eclipse.acceleo</groupId>
 
     <artifactId>org.eclipse.acceleo.maven.plugin.tests</artifactId>
 
     <artifactId>org.eclipse.acceleo.maven.plugin.tests</artifactId>
     <version>1.0.0.qualifier</version>
+
     <version>3.5.0-SNAPSHOT</version>
 
     <packaging>eclipse-plugin</packaging>
 
     <packaging>eclipse-plugin</packaging>
  
Line 240: Line 245:
 
       </repository>
 
       </repository>
 
       <repository>
 
       <repository>
         <id>Indigo Release</id>
+
         <id>Eclipse - Acceleo Snapshots</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/indigo</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
 
       </repository>
 
       </repository>
 
       <repository>
 
       <repository>
         <id>Juno Release</id>
+
         <id>Eclipse - Acceleo Release</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/juno</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
      </repository>
+
      <repository>
+
        <id>Snapshots</id>
+
        <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/snapshots</url>
+
 
       </repository>
 
       </repository>
 
     </repositories>
 
     </repositories>
Line 260: Line 261:
 
       </pluginRepository>
 
       </pluginRepository>
 
       <pluginRepository>
 
       <pluginRepository>
         <id>Indigo Release</id>
+
         <id>Eclipse - Acceleo Snapshots</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/indigo</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
 
       </pluginRepository>
 
       </pluginRepository>
 
       <pluginRepository>
 
       <pluginRepository>
         <id>Juno Release</id>
+
         <id>Eclipse - Acceleo Release</id>
         <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/releases/juno</url>
+
         <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
      </pluginRepository>
+
      <pluginRepository>
+
        <id>Snapshots</id>
+
        <url>https://raw.github.com/eclipse/acceleo/master/maven/repository/snapshots</url>
+
 
       </pluginRepository>
 
       </pluginRepository>
 
     </pluginRepositories>
 
     </pluginRepositories>
  
 
The dependencies used.
 
The dependencies used.
     <dependencies><span style="color:#FF40C6">
+
     <dependencies><span style="color:#1B9AF7">
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.acceleo</groupId>
 
         <groupId>org.eclipse.acceleo</groupId>
         <artifactId>maven</artifactId>
+
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.2.1</version>
+
         <version>3.5.0-SNAPSHOT</version>
       </dependency></span>
+
       </dependency>
 +
      <dependency>
 +
        <groupId>org.eclipse.acceleo</groupId>
 +
        <artifactId>org.eclipse.acceleo.engine</artifactId>
 +
        <version>3.5.0-SNAPSHOT</version>
 +
      </dependency>
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.uml2</groupId>
 
         <groupId>org.eclipse.uml2</groupId>
         <artifactId>uml</artifactId>
+
         <artifactId>org.eclipse.uml2.uml</artifactId>
         <version>3.2.1</version>
+
         <version>4.1.1.v20130902-0826</version>
 
       </dependency>
 
       </dependency>
 
       <dependency>
 
       <dependency>
 
         <groupId>org.eclipse.uml2</groupId>
 
         <groupId>org.eclipse.uml2</groupId>
         <artifactId>common</artifactId>
+
         <artifactId>org.eclipse.uml2.types</artifactId>
         <version>1.6.0</version>
+
         <version>1.1.0.v20130902-0826</version>
 +
      </dependency>
 +
      <dependency>
 +
        <groupId>org.eclipse.uml2</groupId>
 +
        <artifactId>org.eclipse.uml2.common</artifactId>
 +
        <version>1.8.1.v20130902-0826</version>
 
       </dependency>
 
       </dependency>
 
       <dependency>
 
       <dependency>
Line 295: Line 302:
 
         <version>1.6.4</version>
 
         <version>1.6.4</version>
 
       </dependency>
 
       </dependency>
     </dependencies>
+
     </span></dependencies>
  
 
The configuration of the build. You can see here that we are building this generator while using another existing generator as a dependency. This generator is, here, found by Tycho thanks to the update site define above in the "repositories" section.
 
The configuration of the build. You can see here that we are building this generator while using another existing generator as a dependency. This generator is, here, found by Tycho thanks to the update site define above in the "repositories" section.
Line 317: Line 324:
 
         <plugin>
 
         <plugin>
 
           <groupId>org.eclipse.acceleo</groupId>
 
           <groupId>org.eclipse.acceleo</groupId>
           <artifactId>maven</artifactId>
+
           <artifactId>org.eclipse.acceleo.maven</artifactId>
           <version>3.2.1</version>
+
           <version>3.5.0-SNAPSHOT</version>
 
           <executions>
 
           <executions>
 
             <execution>
 
             <execution>
 
               <phase>compile</phase>
 
               <phase>compile</phase>
 
             </execution>
 
             </execution>
           </executions><span style="color:#FF40C6">
+
           </executions><span style="color:#1B9AF7">
 
           <configuration>
 
           <configuration>
 
             <useBinaryResources>false</useBinaryResources>
 
             <useBinaryResources>false</useBinaryResources>
Line 391: Line 398:
 
== Plugin Management (parent and children pom.xml) ==
 
== Plugin Management (parent and children pom.xml) ==
 
In order to support a complex maven architecture with a parent pom.xml and children pom.xml, you should declare in the parent pom.xml the following code
 
In order to support a complex maven architecture with a parent pom.xml and children pom.xml, you should declare in the parent pom.xml the following code
   <build><span style="color:#FF40C6">
+
   <build><span style="color:#1B9AF7">
 
     <pluginManagement>
 
     <pluginManagement>
 
       <plugins>
 
       <plugins>
 
         <plugin>
 
         <plugin>
 
           <groupId>org.eclipse.acceleo</groupId>
 
           <groupId>org.eclipse.acceleo</groupId>
         <artifactId>maven</artifactId>
+
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.2.1</version>
+
         <version>3.5.0-SNAPSHOT</version>
 
           <executions>
 
           <executions>
 
             <execution>
 
             <execution>
Line 418: Line 425:
 
       <plugin>
 
       <plugin>
 
         <groupId>org.eclipse.acceleo</groupId>
 
         <groupId>org.eclipse.acceleo</groupId>
         <artifactId>maven</artifactId>
+
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.2.1</version>
+
         <version>3.5.0-SNAPSHOT</version>
         <executions><span style="color:#FF40C6">
+
         <executions><span style="color:#1B9AF7">
 
           <execution>
 
           <execution>
 
             <phase>compile</phase>
 
             <phase>compile</phase>

Revision as of 06:46, 21 January 2014

Contents

Maven Integration

Debug Messages

Debug messages in Maven can be activated with a "-X" at the end of your maven command. For example to have the debug message of the clean operation, switch "mvn clean" to this "mvn clean -X".

Maven Hosting

The Acceleo artifacts and their stand alone dependencies are now hosted on repo.eclipse.org

Releases Notes

2014/01/20

  • The Acceleo artifacts are now hosted on repo.eclipse.org along with the maven plugin. They are now built as part of the Acceleo nightly build.
  • The artifactId of the maven plugin has been modified to org.eclipse.acceleo.maven to match all the other Acceleo artifacts
  • The hosting on raw.github.com is now deprecated!

2012/09/7

  • Fixing the possible ClassCastException with multiple generators built in a single maven build.
  • The build will now fail if there are errors.
  • A new property has been introduced to deactivate the failure on error. (<failOnError>false</failOnError>)

2012/07/09

  • The meta-model can now be resolved from the compilation dependencies and not only from the runtime dependencies. You can have the meta-model in a dependency resolved by Tycho and not only in one resolved by Maven
  • Improved debug messages

2012/06/25

  • Fix a bug for Mac OS X and Linux support of the build with dependencies inside jars
  • Improved debug messages

2012/05/20

  • First release

Configuration

The Acceleo maven plugin uses a configuration block to find the information about the project that should be compiled. Here is an example of this configuration for an UML generator.

 <configuration>
   <useBinaryResources>false</useBinaryResources>
   <usePlatformResourcePath>true</usePlatformResourcePath>
   <acceleoProject>
     <root>${project.basedir}</root>
     <entries>
       <entry>
         <input>src/main/java</input>
         <output>target/classes</output>
       </entry>
     </entries>
     <jars>
       <jar>p2.eclipse-plugin:org.obeonetwork.pim.uml2.gen.java</jar>
     </jars>
   </acceleoProject>
   <packagesToRegister>
     <packageToRegister>org.eclipse.uml2.uml.UMLPackage</packageToRegister>
   </packagesToRegister>
   <uriHandler>org.eclipse.acceleo.maven.AcceleoURIHandler</uriHandler>
   <failOnError>false</failOnError>
 </configuration>
  • useBinaryResource - indicate that the advanced serialization should be used. The compiled modules produced are smaller but they are not as powerful to support complex URI use case (dynamic meta-models for example). This option should be at "false" by default.
  • usePlatformResourcePath - indicate that absolute paths should be converted to "platform:/" relative paths. This option should be at "true" by default.
  • root - The root of the project
  • entries - Classpath entries for example "src" as the input and "bin" as the output.
  • jars - The dependencies of the generator. Those dependencies can be defined using one of the following conventions
    • ${project.basedir}\lib\myJar.jar - A jar file located in the project.
    • p2.eclipse-plugin:org.eclipse.acceleo.anotherGenerator - Another generator resolved thanks to Tycho.
    • p2.eclipse-plugin:org.eclipse.acceleo.anotherGenerator:1.0.0 - Another generator resolved thanks to Tycho limited to a specific version.
    • org.eclipse.acceleo:org.eclipse.acceleo.anotherGenerator - Another generator resolved by maven.
    • org.eclipse.acceleo:org.eclipse.acceleo.anotherGenerator:1.0.0 - Another generator resolved by maven limited to a specific version.
    • org.eclipse.acceleo.anotherGenerator - Another generator defined as a maven dependency.
    • org.eclipse.acceleo.anotherGenerator:1.0.0 - Another generator defined as a maven dependency with a restriction on a specific version.
    • C:\Users\MyName\...\myJar.jar - The absolute path of a jar file.
  • packagesToRegister - The name of the Java class that should be used to register the package on which the generation is launched.
  • uriHandler - An AcceleoURIHandler used to convert the URI of the dependencies (if you want a different behavior than the usePlatformResourcePath). The default URI handler provided (org.eclipse.acceleo.maven.AcceleoURIHandler), does the same job as the option usePlatformResourcePath.
  • failOnError - Indicates if the compilation should fail if errors are found (true by default).

Stand Alone

Launch this with the following command: mvn clean org.eclipse.acceleo:org.eclipse.acceleo.maven:3.5.0-SNAPSHOT:acceleo-compile compile verify

The header of a regular maven pom.xml file.

 <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>

The information of the project to build.

   <groupId>org.eclipse.acceleo</groupId>
   <artifactId>org.eclipse.acceleo.maven-test</artifactId>
   <version>3.5.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>org.eclipse.acceleo.maven.tests</name>
   <description>The Acceleo maven tests plugin.</description>    

The repositories to use for the dependencies of this project (ex: org.eclipse.uml2.uml).

   <repositories>
     <repository>
       <id>Eclipse - Acceleo Snapshots</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
     </repository>
     <repository>
       <id>Eclipse - Acceleo Release</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
     </repository>
   </repositories>

The repositories where the plugin used during the build will be found (ex: org.eclipse.acceleo.maven).

   <pluginRepositories>
     <pluginRepository>
       <id>Eclipse - Acceleo Snapshots</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
     </pluginRepository>
     <pluginRepository>
       <id>Eclipse - Acceleo Release</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
     </pluginRepository>
   </pluginRepositories>

The dependencies used to build. Here, the Acceleo maven plugin, the two plugins needed for the UML meta-model and log4j.

   <dependencies>
     <dependency>
       <groupId>org.eclipse.acceleo</groupId>
       <artifactId>org.eclipse.acceleo.maven</artifactId>
       <version>3.5.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.acceleo</groupId>
       <artifactId>org.eclipse.acceleo.engine</artifactId>
       <version>3.5.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.uml</artifactId>
       <version>4.1.1.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.types</artifactId>
       <version>1.1.0.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.common</artifactId>
       <version>1.8.1.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
     </dependency>
   </dependencies>

The configuration of the Acceleo build.

   <build>
     <plugins>
       <plugin>
         <groupId>org.eclipse.acceleo</groupId>
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.5.0-SNAPSHOT</version>
         <executions>
           <execution>
             <phase>compile</phase>
           </execution>
         </executions>
         <configuration>
           <useBinaryResources>false</useBinaryResources>
           <usePlatformResourcePath>true</usePlatformResourcePath>
           <acceleoProject>
             <root>${project.basedir}</root>
             <entries>
               <entry>
                 <input>src/main/java</input>
                 <output>target/classes</output>
               </entry>
             </entries>
           </acceleoProject>
           <packagesToRegister>
             <packageToRegister>org.eclipse.uml2.uml.UMLPackage</packageToRegister>
           </packagesToRegister>
         </configuration>
       </plugin>
     </plugins>
   </build>
 </project>

Maven Tycho build

Launch this with the following command: mvn clean org.eclipse.acceleo:org.eclipse.acceleo.maven:3.5.0-SNAPSHOT:acceleo-compile compile verify

The following build only manages the compilation of an UML generator that is using another UML plugin as a dependency, for the support of features and update site have a look at Eclipse Minerva.

The regular header of a Tycho based build.

 <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>

The configuration of the plugin (the artifactId must match the name of the plugin).

   <groupId>org.eclipse.acceleo</groupId>
   <artifactId>org.eclipse.acceleo.maven.plugin.tests</artifactId>
   <version>3.5.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>

The properties of the build

   <properties>
     <tycho-version>0.14.1</tycho-version>
   </properties>
   
   <profiles>
     <profile>
       <id>platform-indigo</id>
       <activation>
         <activeByDefault>true</activeByDefault>
         <property>
           <name>platform-version-name</name>
           <value>indigo</value>
         </property>
       </activation>
       <properties>
         <uml-to-java-site>http://marketplace.obeonetwork.com/updates/od5/</uml-to-java-site>
         <eclipse-site>http://download.eclipse.org/releases/indigo</eclipse-site>
         <platform-version>[3.7,3.8)</platform-version>
       </properties>
     </profile>
   </profiles>

Where to find the dependencies.

   <repositories>
     <repository>
       <id>eclipse-platform</id>
       <layout>p2</layout>
       <url>${eclipse-site}</url>
     </repository>
     <repository>
       <id>uml-to-java</id>
       <layout>p2</layout>
       <url>${uml-to-java-site}</url>
     </repository>
     <repository>
       <id>Eclipse - Acceleo Snapshots</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
     </repository>
     <repository>
       <id>Eclipse - Acceleo Release</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
     </repository>
   </repositories>

Where to find the maven plugin used during the build.

   <pluginRepositories>
     <pluginRepository>
       <id>codehaus.snapshots</id>
       <url>http://snapshots.repository.codehaus.org/</url>
     </pluginRepository>
     <pluginRepository>
       <id>Eclipse - Acceleo Snapshots</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-snapshots</url>
     </pluginRepository>
     <pluginRepository>
       <id>Eclipse - Acceleo Release</id>
       <url>https://repo.eclipse.org/content/repositories/acceleo-releases</url>
     </pluginRepository>
   </pluginRepositories>

The dependencies used.

   <dependencies>
     <dependency>
       <groupId>org.eclipse.acceleo</groupId>
       <artifactId>org.eclipse.acceleo.maven</artifactId>
       <version>3.5.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.acceleo</groupId>
       <artifactId>org.eclipse.acceleo.engine</artifactId>
       <version>3.5.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.uml</artifactId>
       <version>4.1.1.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.types</artifactId>
       <version>1.1.0.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.uml2</groupId>
       <artifactId>org.eclipse.uml2.common</artifactId>
       <version>1.8.1.v20130902-0826</version>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
     </dependency>
   </dependencies>

The configuration of the build. You can see here that we are building this generator while using another existing generator as a dependency. This generator is, here, found by Tycho thanks to the update site define above in the "repositories" section.

   <build>
     <plugins>
       <plugin>
         <groupId>org.eclipse.tycho</groupId>
         <artifactId>tycho-maven-plugin</artifactId>
         <version>${tycho-version}</version>
         <extensions>true</extensions>
       </plugin>
       <plugin>
         <groupId>org.eclipse.tycho</groupId>
         <artifactId>target-platform-configuration</artifactId>
         <version>${tycho-version}</version>
         <configuration>
           <resolver>p2</resolver>
           <pomDependencies>consider</pomDependencies>
         </configuration>
       </plugin>
       <plugin>
         <groupId>org.eclipse.acceleo</groupId>
         <artifactId>org.eclipse.acceleo.maven</artifactId>
         <version>3.5.0-SNAPSHOT</version>
         <executions>
           <execution>
             <phase>compile</phase>
           </execution>
         </executions>
         <configuration>
           <useBinaryResources>false</useBinaryResources>
           <usePlatformResourcePath>true</usePlatformResourcePath>
           <acceleoProject>
             <root>${project.basedir}</root>
             <entries>
               <entry>
                 <input>src/main/java</input>
                 <output>target/classes</output>
               </entry>
             </entries>
             <jars>
               <jar>p2.eclipse-plugin:org.obeonetwork.pim.uml2.gen.java</jar>
             </jars>
           </acceleoProject>
           <packagesToRegister>
             <packageToRegister>org.eclipse.uml2.uml.UMLPackage</packageToRegister>
           </packagesToRegister>
           <uriHandler>org.eclipse.acceleo.maven.AcceleoURIHandler</uriHandler>
         </configuration>
       </plugin>
     </plugins>
     <pluginManagement>
       <plugins>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-compiler-plugin</artifactId>
           <version>${tycho-version}</version>
           <configuration>
             <encoding>UTF-8</encoding>
           </configuration>
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-source-plugin</artifactId>
           <version>${tycho-version}</version>
           <executions>
             <execution>
               <id>attach-source</id>
               <phase>process-classes</phase>
               <goals>
                 <goal>plugin-source</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
           <version>2.4.1</version>
           <configuration>
             <encoding>ISO-8859-1</encoding>
           </configuration>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-antrun-plugin</artifactId>
           <version>1.3</version>
         </plugin>
       </plugins>
     </pluginManagement>
   </build>
 </project>

Plugin Management (parent and children pom.xml)

In order to support a complex maven architecture with a parent pom.xml and children pom.xml, you should declare in the parent pom.xml the following code

 <build>
   <pluginManagement>
     <plugins>
       <plugin>
         <groupId>org.eclipse.acceleo</groupId>
        <artifactId>org.eclipse.acceleo.maven</artifactId>
        <version>3.5.0-SNAPSHOT</version>
         <executions>
           <execution>
             <id>acceleo-compile</id>
             <phase>compile</phase>
             <goals>
               <goal>acceleo-compile</goal>
             </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </pluginManagement>
 </build>

And in the children, the Acceleo configuration, like this

 <build>
   <plugins>
     <plugin>
       <groupId>org.eclipse.acceleo</groupId>
       <artifactId>org.eclipse.acceleo.maven</artifactId>
       <version>3.5.0-SNAPSHOT</version>
       <executions>
         <execution>
           <phase>compile</phase>
           <goals>
              <goal>acceleo-compile</goal>
            </goals>
         </execution>
       </executions>
       <configuration>
         <useBinaryResources>false</useBinaryResources>
         <usePlatformResourcePath>true</usePlatformResourcePath>
         <acceleoProject>
           <root>${project.basedir}</root>
           <entries>
             <entry>
               <input>src</input>
               <output>target/classes</output>
             </entry>
           </entries>
         </acceleoProject>
         <packagesToRegister>
           <packageToRegister>org.eclipse.emf.ecore.EcorePackage</packageToRegister>
         </packagesToRegister>
       </configuration>
     </plugin>
   </plugins>
 </build>

The Acceleo compilation will be launch during the compilation phase without having to specify it in the maven command. It will work with a simple "mvn clean verify".

Known Issues

ClassCast Exception: XXXFactory cannot be casted into a XXXFactoryImpl

It happens sometimes with complex dependencies between generators during a same build (if in the same build, you are building the metamodel and the generators), it should work anyway. Building the meta-model separately and resolving it with a Tycho based dependency and the location of the update site of the meta-model seems to fix this issue.

This issue should be fixed in the latest release.