2010-06-18 41 views
1

我們已經設置了一個使用Maven發行插件的項目,該項目包括一個解包從Artifactory提取的JAR的XML模式的階段和一個生成XJC類的階段。我們在maven版本2.2.1上。帶有JAXB問題的Maven發行插件

不幸的是,後一階段在前者之前執行,這意味着它不爲模式生成XJC類。的部分pom.xml的樣子:

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
    </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>unpack</id> 
     <!-- phase>generate-sources</phase --> 
     <goals> 
      <goal>unpack</goal> 
      <goal>copy</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>ourgroupid</groupId> 
       <artifactId>ourschemas</artifactId> 
       <version>5.1</version> 
       <outputDirectory>${project.basedir}/src/main/webapp/xsd</outputDirectory> 
       <excludes>META-INF/</excludes> 
       <overWrite>true</overWrite> 
      </artifactItem> 
      </artifactItems> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>maven-buildnumber-plugin</artifactId> 
    <version>0.9.6</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doCheck>true</doCheck> 
     <doUpdate>true</doUpdate> 
    </configuration> 
    </plugin> 
    <plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <configuration> 
     <schemaDirectory>${project.basedir}/src/main/webapp/xsd</schemaDirectory> 
     <schemaIncludes> 
      <include>*.xsd</include> 
      <include>*/*.xsd</include> 
     </schemaIncludes> 
     <verbose>true</verbose> 
     <!-- args> 
      <arg>-Djavax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema=org.apache.xerces.jaxp.validation.XMLSchemaFactory</arg> 
     </args--> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

我試着用搜索引擎吧,不幸的是我得到了一個擁有成千上萬的鏈接沒有一個實際上相關的情況下,所以我會,如果有人知道,非常感謝如何配置發佈插件步驟的順序以確保在完成之前完全執行b。

感謝

+0

你正在使用哪個maven版本?因爲在2.2.0之前的生命週期執行順序中存在錯誤,我認爲 – 2010-06-18 15:17:05

+0

2.2.1不幸的是,至少不幸的是,否則升級將是一個簡單的解決方案。 – Wysawyg 2010-06-18 15:22:10

回答

1

出現了一些問題,執行的順序(如MNG-3719MNG-2258),但它應該是罰款與Maven 2.2.1和插件應該以相同的順序,因爲它們中列出執行POM綁定到同一階段時。事實上,你的POM略作修改:

  • 我註釋掉的依賴插件
  • 我加idexecution元素
  • 我用了一個「假」依賴於依賴插件
<phase>generate-sources</phase>

我得到以下輸出:

 
$ mvn generate-sources 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3070794 
[INFO] task-segment: [generate-sources] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [dependency:unpack {execution: step1-unpack}] 
[INFO] Configured Artifact: c3p0:c3p0:0.9.1.2:jar 
[INFO] Unpacking /home/pascal/.m2/repository/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jarto 
/home/pascal/Projects/stackoverflow/Q3070794/src/main/webapp/xsd 
with Includes null and excludes:META-INF/ 
[INFO] [dependency:copy {execution: step1-unpack}] 
[INFO] Configured Artifact: c3p0:c3p0:0.9.1.2:jar 
[INFO] Copying c3p0-0.9.1.2.jar to /home/pascal/Projects/stackoverflow/Q3070794/src/main/webapp/xsd/c3p0-0.9.1.2.jar 
[INFO] [jaxb2:generate {execution: step2-xjc}] 
[INFO] Started execution. 
... 

dependency:unpackdependency:copy完成之前jaxb2:generate。除非我錯過了什麼,這是預期的結果。使用Maven 2.2.1進行測試。

+0

工作,謝謝。我認爲也許中間階段有一個階段導致它在早期執行jaxb2,而不是按順序執行列出的三個階段。 – Wysawyg 2010-06-19 12:45:04