题
我们有一个多模块的构建模块采用不同的技术,例如爪哇和Flex。是它在某种程度上能够激活不同的配置文件的基础上的模块,该模块是编纂目前?
我试着与一个激活喜欢
<profile>
<id>flex</id>
<activation>
<file>
<exists>${basedir}/src/main/flex</exists>
</file>
</activation>
...
</profile
但它没有工作,虽然使用美元{basedir}是 记录在案的专家文件 (这是一个错误家).是有一个不同的可能性,以有不同的活动根据当前的模块?或者不家只允许来激活一个档案的所有模块或根本没有?
解决方案
对于那些喜欢自己阅读这个问题寻找答案的人来说,这个用例现在可以在Maven 3中使用。
在早期版本的3中有一个影响此功能的错误(请参阅 http:// jira .codehaus.org / browse / MNG-2363 )但它适用于我使用Maven 3.0.4。
其他提示
后一些更多的研究,我最后得出的结论,这是不可能的,原因有两个在前玛文版本(2.1.0,包括):
- 家概况不能继承的,所以你不能确定一个档案在父POM和激活一个孩子POM。
- 我还没有找到一个可能性,以激活从一个POM本身。激活的不工作与${basedir}酒店的激活的响应只对系统的设置,这是全球定通过-D的选择。
在2.2.1中,配置文件是继承的,但$ {basedir}问题仍然存在。我在同一条船上 - 我需要根据给定项目中存在的文件来激活配置文件。我的子构建单独运行就好了(由本地文件存在激活的继承配置文件),但是如果我从顶级父级运行构建,它们会因为找不到文件而失败。
关于基于文件的激活,您可以尝试删除$ {basedir}。我们这样使用它:
<activation>
<file>
<missing>target/jboss/conf/jboss-service.xml</missing>
</file>
</activation>
我不知道这是否有帮助,但我用以下方法解决了类似的问题:
- 我在父POM中创建并描述了配置文件,其中包含
activeByDefault = false
。然后,PluginManagement-Section包含不同插件的配置。 - 孩子们可以重复使用此配置文件,并设置
activeByDefault = true
这会使配置文件处于活动状态,但仍然没有激活任何插件。 - 但幸运的是,所描述的插件配置可用。您可以通过在插件部分中定义它们来重用它们。您只需提供group-和artifactID,并为要在子项中重用的每个插件设置
inherited = true
。
醇>
我希望有所帮助。很抱歉不包含任何代码段,但我希望即使这样也可以理解。
您可以在每个模块中设置要使用配置文件的属性,然后使用“属性”激活您的个人资料。
不隶属于 StackOverflow