1

我有一个 Maven 多模块项目,我希望我可以使用配置文件根据 POM 属性为两种情况自定义插件的配置,但事实证明配置文件只能由外部属性激活,而不能由 POM 属性激活,所以现在我是寻找另一种方式来拥有不同的项目配置,我想得到一些想法。这是我的设置

我有一个 3 级树:一个根父 POM X 有许多子模块 A、B、C ......这些模块中的每一个都有 2 个子模块 1 和 2(所以 A1、A2、B1、B2 等)

我需要做的是为所有类型 1 的模块和另一个为类型 2 的所有模块自定义叶模块的配置。我试图避免使所有 1 共享一个共同的父级和所有 2 的另一个(不同的)共同父级,因为1 和 2 已经共享了来自其各自父级(例如 A 或 B)的一些数据。如果没有其他办法,我会将所有公共数据从 A 下推到 A1 和 A2(不理想,DRY 原则),并使所有 1 都从一个公共 1 父级继承,但我试图避免这种情况。就像我说的那样,我尝试在树的叶子中设置一个属性,并使用一个属性指定它是 1 还是 2,然后将两个不同的配置文件放在祖父母 POM X 中并根据该属性激活配置文件. 这没有用。

还有其他建议吗?

4

1 回答 1

-1

我相信你可以实现你的目标<pluginManagement>

例如,在你的父 POM 中,你有这样的东西:

<pluginManagement>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.5</version>
      <configuration>
         <systemPropertyVariables>
              <vendor.license.file>../licenses/vendor.lic</vendor.license.file>
         </systemPropertyVariables>
      </configuration>
    </plugin>
</pluginManagement>

它为 POM 的子模块定义了 Surefire 2.5 版。请注意,您实际上可以在插件配置中放置更多版本,例如子项目继承(和覆盖)的配置。请参阅Maven POM 参考 - 插件管理

于 2012-09-19T14:12:16.203 回答