根据当前模块激活不同的Maven配置文件?

Yab*_*aba 2 profile maven-2

我们有一个多模块构建,其中包含使用不同技术的模块,如Java和Flex.是否有可能根据当前编译的模块激活不同的配置文件?

我尝试了激活之类的

<profile>
  <id>flex</id>
  <activation>
    <file>
      <exists>${basedir}/src/main/flex</exists>
    </file>
  </activation>
  ...
</profile
Run Code Online (Sandbox Code Playgroud)

但它没有用,虽然在Maven文档中记录了$ {basedir}的使用(这是Maven中的一个错误).是否有不同的可能性基于当前模块进行不同的激活?或者Maven是否只允许激活所有模块的配置文件或根本不激活?

Yab*_*aba 5

经过一些更多的研究后,我终于得出结论,由于当前Maven版本(2.1.0)中的两个原因,这是不可能的:

  • Maven配置文件不是继承的,因此您无法在父POM中定义配置文件并在子POM中激活它.
  • 我没有发现从POM本身激活配置文件的可能性.激活不适用于$ {basedir},属性激活响应仅适用于通过-D选项全局指定的系统设置.

  • 对不起,你错了.配置文件不是继承的.您可以从子文件夹激活它们,但不会再次评估设置,因此$ BASEDir仅针对已定义的POM进行一次评估.另见http://maven.40175.n5.nabble.com/Profile-inheritance-td79841.html,http://maven.40175.n5.nabble.com/Maven-2-inheritance-which-elements-get-如果你还不相信我,继承-td107049.html和http://jira.codehaus.org/browse/MNG-2363.所以删除你的投票会很高兴. (4认同)