我们有一个多模块的构建模块采用不同的技术,例如爪哇和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>

我不知道这是否有帮助,但我用以下方法解决了类似的问题:

  1. 我在父POM中创建并描述了配置文件,其中包含 activeByDefault = false 。然后,PluginManagement-Section包含不同插件的配置。
  2. 孩子们可以重复使用此配置文件,并设置 activeByDefault = true 这会使配置文件处于活动状态,但仍然没有激活任何插件。
  3. 但幸运的是,所描述的插件配置可用。您可以通过在插件部分中定义它们来重用它们。您只需提供group-和artifactID,并为要在子项中重用的每个插件设置 inherited = true
  4. 我希望有所帮助。很抱歉不包含任何代码段,但我希望即使这样也可以理解。

您可以在每个模块中设置要使用配置文件的属性,然后使用“属性”激活您的个人资料。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top