Maven - 根据项目属性激活配置文件



嗨,我正在尝试实现这样的事情:

在父绒球中,我有

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.artifactId}</value>
    ...

这样,如果我在父 pom 下运行 mvn -DCompile=mod1 install,它只会将配置文件设置应用于模块 1,而不会应用于其他模块。

同样,如果我有

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.packaging}</value>
    ...

然后在父 POM 下运行 mvn -DCompile=war install,它只会将配置文件设置应用于要打包为战争的设置,而不是 jar 或 POM。

我试过了,但它没有按预期工作。我错过了什么吗?请帮忙。

附言无需建议解决方法,因为我只对此方法感兴趣。如果是这样的话,简单地回答是不可能的。谢谢

不起作用,因为...

首先:

  • 配置文件激活适用于系统属性,不适用于 Maven 属性。

以及为什么它从父母到孩子都不起作用:

  • 父 POM 中的属性甚至在子 POM 出现在图片中之前就已展开。

许多人在你之前来到这里,但失败了。

有人可能想知道你真正想做什么。您是否正在从同一源项目构建不同的工件?也许你需要更多的Maven模块来处理事情。

是的,您可以根据一个或多个参数(如env变量)激活配置文件。

<project>
    ...
    <profiles>
        <profile>
            <id>development</id>
            <activation>
                <property>
                    <name>!environment.type</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>

如果您尝试根据 X 进行不同的打包,则可以使用程序集插件并在那里施展魔法http://maven.apache.org/plugins/maven-assembly-plugin/

有关激活属性的更多信息

  • http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html
  • http://earlyandoften.wordpress.com/2011/02/09/disable-maven-profile/

从Maven 3.0开始,POM中的配置文件也可以基于以下条件激活 设置.xml中活动配置文件的属性。

您可以在此处检查给出的示例:

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

相关内容

  • 没有找到相关文章

最新更新