【问题标题】:set a maven plugin to not execute inside the main buildcycle将 Maven 插件设置为不在主构建周期内执行
【发布时间】:2018-01-22 14:33:31
【问题描述】:

我正在使用 maven-jaxb2-plugin 从 wsdl 文件生成源代码。我想手动执行此插件,然后将生成的文件上传到存储库中,但我不希望在我正常构建项目时执行该插件。

如何配置执行来实现这一点?

我正在寻找以下内容:

mvn jaxb2:generate(生成源)

mvn 包(忽略 插件)

到目前为止,我最好的想法是在 pom.xml 中注释和取消注释插件,但我觉得必须有一种更简洁的方法,但我只是在文档中找不到它。

提前致谢。

【问题讨论】:

  • 你能不能只创建单独的 maven 项目来构建源代码(可能还有 wsdl 客户端),然后 mvn 安装它并在你的主项目中使用它作为依赖项?
  • 这样做的目的是为项目中的其他人简化事情。我很欣赏这个想法,但拥有一个不同的项目感觉就像评论/取消评论更多的过度劳累。
  • 您使用的确切插件是什么?

标签: maven maven-plugin


【解决方案1】:

在这种情况下,您应该告诉 Maven 跳过此插件的默认执行,如下所示:

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.13.1</version>
            <executions>
                <execution>
                    <id>default</id>
                    <phase>none</phase>
                </execution> 
            </executions>
        </plugin>

由于这个插件默认绑定到一个阶段,我们只是强制这个 default 执行 id 到 none 阶段,以便这个插件在期间不被执行正常构建 (mvn clean package)。 仍将执行特定的插件调用 (mvn jaxb2:generate)。

【讨论】:

    【解决方案2】:

    像这样使用default-cli 执行ID:

    <plugin>
      <artifactId>maven-jaxb2-plugin</artifactId>
      <executions>
        <execution>
          <id>default-cli</id>
          <goals>
            <goal>generate</goal>
          </goals>
          <configuration>
            <!-- your config here -->
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    未经测试,但我希望它能让你接近。

    Maven docs

    【讨论】:

    • 在主构建周期中执行。我已经阅读了有关 default-cli 的文档,但我并不真正了解它的作用。
    • 你试过了吗?而且您确定运行的执行(如日志中报告的那样)具有执行 ID == default-cli 而不是其他内容?
    猜你喜欢
    • 2011-12-23
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2015-08-01
    • 2015-12-15
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多