【问题标题】:Override version of Maven plugin used in parent pom to new version in main pom将父 pom 中使用的 Maven 插件版本覆盖到主 pom 中的新版本
【发布时间】:2020-08-28 12:06:17
【问题描述】:

从事多模块 Maven 项目。在父 pom 中使用maven-compiler-plugin,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <source>${java.version}</source>
      <target>${java.version}</target>
    </configuration>
  </plugin>

由于其增量编译支持,希望在主项目 pom 中使用 &lt;version&gt;3.1&lt;/version&gt;。在父 pom 中没有写访问权限。如何在主项目 pom 中配置插件以使用新版本?

【问题讨论】:

  • 只需在您的项目中定义一个&lt;build&gt;&lt;pluginManagement&gt;&lt;plugins&gt;..&lt;/plugins&gt;&lt;/pluginManagement&gt;&lt;/build&gt; 块,然后给出groupId/artifactId/version(我离开.. 的地方)(当然是新版本).. 无需定义其他东西。Apart从那我强烈建议升级到最新版本的 maven-compiler-plugin (3.8.1)...见maven.apache.org/plugins

标签: java maven maven-compiler-plugin


【解决方案1】:

您可以覆盖子模块中的插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
      <source>${java.version}</source>
      <target>${java.version}</target>
    </configuration>
  </plugin>

【讨论】:

  • &lt;pluginManagemnt&gt;plugins 部分
  • Pluginmgmt 旨在配置从这个继承的项目构建......所以我会在这里说插件
  • @CodeScale &lt;pluginManagement&gt; 可用于简单地覆盖插件的版本。给定的示例覆盖了不需要覆盖的内容。这就是 pluginManagement 的原因。
  • @khmarbaise pluginmgmt 应该在父 pom.xml 上使用,我同意这一点。但是对于子模块,我刚刚说过使用插件似乎更好地覆盖父插件定义
猜你喜欢
  • 2017-02-22
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多