1

我的构建过程非常复杂,在 Windows 中运行时需要执行一些操作,在 Linux 中运行时需要执行一些操作,并且这些操作需要放置在许多不同的 POM 中。

我知道我可以根据操作系统激活某个配置文件。但我发现的所有示例都包括在标签内采取行动<profiles> ... </profiles>,其中还包括这些配置文件的激活标准。我试图避免的是必须声明许多这样的部分:

POM 1:

</profiles>
<profile>
  <activation>
    <os>
      <family>Windows</family>
      <arch>x86</arch>
    </os>
  </activation>
  <build>
     ...
  </build> 
</profile>
...
</profiles>

然后,当我需要在不同的 POM 中为 Windows 做一些事情时,同样如此,很多次……对于某些配置文件,激活更广泛。

我想在一个地方定义激活策略,然后执行以下操作:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>

      <!-- if profile A is active -->
        <source>1.6</source>
        <target>1.6</target>

      <!-- if profile B is active -->
        <source>1.5</source>
        <target>1.5</target>

  </configuration>
</plugin>

只需根据活动配置文件以不同方式配置插件,而无需在大量 POM 文件中复制插件声明和每个配置文件的所有内容......

另外,如果配置文件 A 处于活动状态,我如何在多个位置进行配置?我是否必须在每个 POM 中重新声明其激活策略的标签,或者有​​没有办法避免所有这些重复?

任何帮助表示赞赏,我有点困惑和惊讶,在网上找到除了基本示例之外的任何东西是多么困难。

4

1 回答 1

0

您可以在super-pom中为各种配置文件定义全局构建并在所有 pom 中继承它

于 2013-10-27T17:49:39.933 回答