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

use*_*188 9 java pom.xml maven

嗨,我想实现这样的事情:

在父母家里,我有

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.artifactId}</value>
    ...
Run Code Online (Sandbox Code Playgroud)

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

同样,如果我有

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.packaging}</value>
    ...
Run Code Online (Sandbox Code Playgroud)

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

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

PS无需建议解决方法,因为我只对此方法感兴趣.如果是这样的话,简单地回答它是不可能有理由的.谢谢

San*_*gen 10

它不会起作用......

首先:

为什么它不会从父母到孩子们工作:

  • 在您的孩子POM进入图片之前,父POM中的属性会被扩展.

许多人在你面前失败了.

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


Mit*_*ski 7

是的,您可以根据env变量等一个或多个参数激活配置文件.

<project>
    ...
    <profiles>
        <profile>
            <id>development</id>
            <activation>
                <property>
                    <name>!environment.type</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>
Run Code Online (Sandbox Code Playgroud)

如果您尝试使用不同的包装取决于X,那么您可以使用组装插件并在那里发挥你的魔力 http://maven.apache.org/plugins/maven-assembly-plugin/

有关激活属性的更多信息