2010-06-14 17 views
9

Tengo un proyecto que utiliza Apache Xmlbeans para el enlace de datos. Actualmente es muy simple, solo tiene algunos archivos de esquema en src/main/xsd y xsdconfig en src/main/xsdconfig.Cómo incluir automáticamente el código generado xmlbeans en maven jar?

Quiero incluir las clases generadas en el archivo jar generado. Funciona si se especifica la xmlbeans objetivo: "xmlbeans MVN: paquete xmlbeans" -> Crea un tarro con las clases XMLBeans

Pero yo quiero hacer esto dentro del ciclo normal de acumulación: "mvn package" -> debería crear un jar con las clases xmlbeans, pero no lo hará.

El POM es la siguiente:

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.test</groupId> 
    <artifactId>xmlbeans-maven-test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <build> 
    <pluginManagement> 
    <plugins> 
    <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>maven-xmlbeans-plugin</artifactId> 
      <version>2.3.3</version> 
    </plugin> 
    </plugins> 
    </pluginManagement> 
    </build> 


    <dependencies> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.4.0</version> 
     <scope>compile</scope> 
    </dependency> 
    </dependencies> 
</project> 

traté de unir de forma manual a las "fuentes" generate-(Y a la fase de "compilar", también) de fase, pero no funciona.

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.leradon</groupId> 
    <artifactId>xmlbeans-maven</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <build> 
    <pluginManagement> 
    <plugins> 
    <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>maven-xmlbeans-plugin</artifactId> 
      <version>2.3.3</version> 
      <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>xmlbeans</goal> 
       </goals> 
      </execution> 
      </executions> 
    </plugin> 

    </plugins> 
    </pluginManagement> 
    </build> 


    <dependencies> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.4.0</version> 
     <scope>compile</scope> 
    </dependency> 
    </dependencies> 
</project> 

¿Cómo puedo configurar el complemento, de manera que cuando corro "mvn package" todas las clases generadas se empaquetan en el frasco?

Saludos, lerad

Respuesta

10

Si configurar el plugin bajo pluginManagement, todavía se necesitan declarar bajo plugins. Para simplificar, no estoy usando el pluginManagement en el pom.xml a continuación:

<project> 
    ... 
    <dependencies> 
    ... 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.4.0</version> 
     <scope>compile</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>xmlbeans-maven-plugin</artifactId> 
     <version>2.3.3</version> 
     <executions> 
      <execution> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>xmlbeans</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Con este POM (y algunos XSD en src/main/xsd que es la ubicación predeterminada), corriendo mvn clean package simplemente funciona (es decir, las fuentes se generan a partir el XSD, compilado y empaquetado como parte de la compilación).

-4

Pruebe esto.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>xmlbeans-maven-plugin</artifactId> 
    <version>2.3.2</version> 
    <executions> 
     <execution> 
      <id /> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>xmlbeans</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <schemaDirectory>src/main/xsd</schemaDirectory> 
     <staleFile>${project.build.directory}/generated-sources/xmlbeans/.staleFlag</staleFile> 
     <verbose>false</verbose> 
     <quiet>false</quiet> 
     <javaSource>1.6</javaSource>      
    </configuration> 
</plugin> 
+2

Una respuesta con código de ejemplo siempre debe incluir por qué ese código funcionará donde no lo hizo el cartel original. – Frans

Cuestiones relacionadas