2010-06-18 42 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