【问题标题】:Maven Release Plugin with JAXB issues带有 JAXB 问题的 Maven 发布插件
【发布时间】:2011-03-05 11:44:17
【问题描述】:

我们已经建立了一个使用 Maven 发布插件的项目,其中包括一个阶段,该阶段解压从 Artifactory 中提取的 XML 模式的 JAR 和一个生成 XJC 类的阶段。我们正在使用 Maven 版本 2.2.1。

不幸的是,后一个阶段在前一个阶段之前执行,这意味着它没有为模式生成 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>

我试过用谷歌搜索它,不幸的是,我最终得到了一个包含数千个链接的案例,其中没有一个实际上是相关的,所以如果有人知道如何配置发布插件步骤的顺序以确保a 在执行 b 之前已完全执行。

谢谢

【问题讨论】:

  • 您使用的是哪个 maven 版本?因为2.2.0之前的生命周期执行顺序有bug,我认为
  • 2.2.1 不幸的是,至少不幸的是,否则升级将是一个简单的解决方案。

标签: java maven-2 jaxb xjc maven-release-plugin


【解决方案1】:

执行顺序存在一些问题(例如MNG-3719MNG-2258),但在 Maven 2.2.1 中应该没问题,插件应该按照它们在绑定到同一阶段时的 POM。实际上,稍微修改了您的 POM:

  • 我取消了依赖插件的&lt;phase&gt;generate-sources&lt;/phase&gt;的注释
  • 我将id 添加到execution 元素中
  • 我为依赖插件使用了“假”依赖

我得到以下输出:

$ mvn 生成源 [INFO] 正在扫描项目... [信息] --------------------------------------------- ------------------------- [INFO] 楼 Q3070794 [INFO] 任务段:[生成源] [信息] --------------------------------------------- ------------------------- [信息] [依赖项:解包 {执行:步骤 1-解包}] [信息] 配置的工件:c3p0:c3p0:0.9.1.2:jar [信息] 解压 /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 包含 null 和排除:META-INF/ [信息] [依赖:复制{执行:step1-unpack}] [信息] 配置的工件:c3p0:c3p0:0.9.1.2:jar [信息] 将 c3p0-0.9.1.2.jar 复制到 /home/pascal/Projects/stackoverflow/Q3070794/src/main/webapp/xsd/c3p0-0.9.1.2.jar [信息] [jaxb2:生成{执行:step2-xjc}] [INFO] 开始执行。 ...

dependency:unpackdependency:copy 完成之前 jaxb2:generate。除非我遗漏了什么,否则这是预期的结果。使用 Maven 2.2.1 测试。

【讨论】:

  • 成功了,谢谢。我认为也许有一个阶段的中间步骤导致它提前执行 jaxb2,而不是按顺序执行列出的三个阶段。
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
相关资源
最近更新 更多