我们有一个多模块构建,其中包含使用不同技术的模块,如Java和Flex。是否有可能根据当前编译的模块激活不同的配置文件?
我尝试使用类似
的激活<profile>
<id>flex</id>
<activation>
<file>
<exists>${basedir}/src/main/flex</exists>
</file>
</activation>
...
</profile
但它没有用,虽然使用$ {basedir}是documented in the Maven documentation(这是Maven中的一个错误)。是否有不同的可能性基于当前模块进行不同的激活?或者Maven是否只允许激活所有模块的配置文件或根本不激活?
答案 0 :(得分:5)
经过一些更多的研究后,我终于得出结论,由于当前Maven版本(2.1.0)中的两个原因,这是不可能的:
答案 1 :(得分:2)
在2.2.1中,配置文件是继承的,但$ {basedir}问题仍然存在。我在同一条船上 - 我需要根据给定项目中存在的文件来激活配置文件。我的子构建单独运行就好了(由本地文件存在激活的继承配置文件),但是如果我从顶级父级运行构建,它们会因为找不到文件而失败。
答案 2 :(得分:2)
对于那些喜欢自己阅读这个问题寻找答案的人来说,这个用例现在可以在Maven 3中使用。
在早期版本的3中有一个影响此功能的错误(请参阅http://jira.codehaus.org/browse/MNG-2363),但它对我来说正确使用Maven 3.0.4。
答案 3 :(得分:0)
关于基于文件的激活,您可以尝试删除$ {basedir}。我们这样使用它:
<activation>
<file>
<missing>target/jboss/conf/jboss-service.xml</missing>
</file>
</activation>
答案 4 :(得分:0)
我不知道这是否有帮助,但我用以下方法解决了类似的问题:
activeByDefault=false
。然后,PluginManagement-Section包含不同插件的配置。activeByDefault=true
这会使配置文件处于活动状态,但仍然没有激活任何插件。inherited=true
。我希望有所帮助。很抱歉不包含任何代码段,但我希望即使这样也可以理解。
答案 5 :(得分:-2)
您可以在每个模块中设置要使用配置文件的属性,然后在配置文件中使用“属性”激活。