2010-06-14 39 views
9

Tôi có một dự án sử dụng Apache Xmlbeans để kết nối dữ liệu. Hiện tại nó rất đơn giản nó chỉ có một số Schema-Files trong src/main/xsd và xsdconfig trong src/main/xsdconfig.Làm cách nào để bao gồm mã được tạo tự động xmlbeans vào maven jar?

Tôi muốn đưa các Lớp được tạo vào tệp jar được tạo. Nó hoạt động nếu tôi chỉ định mục tiêu xmlbeans: "mvn xmlbeans: xmlbeans package" -> Tạo một Jar với các lớp xmlbeans

Nhưng tôi muốn làm điều này trong chu trình xây dựng bình thường: "gói mvn" -> nên tạo một lọ với các lớp xmlbeans, nhưng sẽ không.

Các pom như sau:

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

tôi đã cố gắng để ràng buộc nó bằng tay với "generate-nguồn" (Và với "biên dịch" giai đoạn, quá) giai đoạn, nhưng nó không hoạt động.

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

Tôi có thể định cấu hình plugin như thế nào khi tôi chạy "gói mvn" tất cả các lớp được tạo sẽ được đóng gói trong bình?

Greetings, lerad

Trả lời

10

Nếu bạn cấu hình plugin theo pluginManagement, bạn vẫn cần phải khai báo nó dưới plugins. Để đơn giản hóa, tôi không sử dụng các pluginManagement trong pom.xml dưới đây:

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

Với POM này (và một số XSD trong src/main/xsd đó là vị trí mặc định), chạy mvn clean package chỉ hoạt động (tức là nguồn được tạo ra từ XSD, được biên soạn và đóng gói như một phần của bản dựng).

-4

Hãy thử điều này.

<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

Câu trả lời có mã mẫu phải luôn bao gồm lý do mã đó sẽ hoạt động khi áp phích ban đầu không hoạt động. – Frans

Các vấn đề liên quan