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

我们有一个多模块构建模块,使用不同的技术,如Java和Flex。 基于当前编译的模块是否可以激活不同的配置文件?

我试着用激活像

<profile>
  <id>flex</id>
  <activation>
    <file>
      <exists>${basedir}/src/main/flex</exists>
    </file>
  </activation>
  ...
</profile

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


对于像我这样的读这个问题寻找答案的人来说,这个用例现在可以在Maven 3中使用。

在早期版本的3中有一个影响此功能的bug(请参阅http://jira.codehaus.org/browse/MNG-2363),但它对我的正确使用Maven 3.0.4的作用。


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

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

  • 在2.2.1中,配置文件被继承,但$ {basedir}问题仍然存在。 我在同一条船上 - 我需要根据给定项目中文件的存在来激活配置文件。 我的孩子建立单独运行就好(继承的配置文件激活本地文件存在),但如果我从顶级父母运行生成,他们失败,因为没有找到文件。

    链接地址: http://www.djcxy.com/p/62117.html

    上一篇: Activate different Maven profiles depending on current module?

    下一篇: How to activate a Maven profile in a dependent module?