2010-06-14 19 views
9

Mam projekt, który używa Apache Xmlbeans do databinding. Obecnie jest bardzo proste, że ma tylko niektóre pliki Schema w src/main/xsd i xsdconfig w src/main/xsdconfig.Jak dołączyć automatycznie wygenerowany kod xmlbeans do maven jar?

Chcę dołączyć wygenerowane klasy do wygenerowanego pliku jar. Działa, jeśli określę cel xmlbeans: "mvn xmlbeans: pakiet xmlbeans" -> Tworzy słoik z klasami xmlbeans

Ale chcę to zrobić w normalnym cyklu budowy: "pakiet mvn" -> powinien utworzyć słoik z klasami xmlbeans, ale nie będzie.

POM jest następujący:

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

Próbowałem go związać ręcznie na "generate-źródeł" (i do fazy "kompilacji", zbyt) fazy, ale to nie działa.

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

Jak mogę skonfigurować wtyczkę, aby po uruchomieniu "pakietu mvn" wszystkie wygenerowane klasy zostały spakowane do słoika?

Pozdrowienia, lerad

Odpowiedz

10

Jeśli skonfigurować Wtyczka pod pluginManagement, trzeba jeszcze zadeklarować ją pod plugins. Aby uprościć, ja nie używam pluginManagement w poniższej pom.xml:

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

Z tego POM (i niektóre XSD w src/main/xsd która jest domyślna lokalizacja), bieganie mvn clean package prostu działa (tzn źródła są generowane XSD, skompilowany i spakowany jako część kompilacji).

-4

Spróbuj tego.

<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

Odpowiedź z przykładowym kodem powinna zawsze zawierać informację o tym, dlaczego kod będzie działał tam, gdzie oryginalny plakat nie był. – Frans