如何在主 POM 和子 POM 上引用属性文件

How to reference a properties file on Master and Child POM's

我有一个定义两个配置文件的主 POM 文件:QA 和 Production。它使用 properties-maven-plugin 来设置一些变量,这些变量稍后会被 wildfly-maven-plugin 用来将包部署到 Web 服务器。

像这样: [主 POM]

    <profile>
        <id>qa</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.0.0</version>
                    <executions>
                        <execution>
                            <phase>initialize</phase>
                            <goals>
                                <goal>read-project-properties</goal>
                            </goals>
                            <configuration>
                                <files>
                                    <file>../build-qa.properties</file>
                                </files>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

在子 POM 上:

<parent>
    <groupId>fhng.apps</groupId>
    <artifactId>fhng-build-all</artifactId>
    <version>1.0</version>
</parent>
(...)
<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <version>1.1.0.Alpha11</version>
    <executions>
        <execution>
        <phase>install</phase>
        <goals>
            <goal>deploy</goal>
        </goals>
        </execution>
    </executions>
    <configuration>
        <hostname>${wildfly.server}</hostname>
        <port>${wildfly.port}</port>
        <username>${wildfly.username}</username>
        <password>${wildfly.password}</password>
        <filename>myapp.war</filename>
    </configuration>
</plugin>

主 POM 位于项目根目录中,每个特定的 Web 应用程序位于子文件夹中。如果我从每个特定的项目文件夹 运行 mvn install ,这将起作用。我非常想从 master pom 文件夹中 运行 "mvn -Pqa clean install"。但是它失败了,因为主 pom 引用 ..\build-qa.properties 它在每个项目中都有效,但显然在父目录中无效。

有什么办法可以解决吗?是否可以引用相对于 Master POM 文件夹的文件,而不管构建了哪个特定的 POM?我知道这种方法打破了 Maven 的前提,即父包不一定存在于我们的工作目录中。

作为替代方案,有没有一种方法可以将属性文件作为父包的工件进行引用?这样 maven 就能够从 repo 中获取所述父包并使用其中的文件?

我也接受一种方法 "skip" 或者 "disable" 父 pom 上的 initialize/compile/install 阶段,这样它就不会尝试读取 .properties 文件。

谢谢!

如果在根文件夹中放置目录.mvn/,则可以通过${maven.multiModuleProjectDirectory}

引用根文件夹

我目前的情况:

<file>${maven.multiModuleProjectDirectory}/build-qa.properties</file>

参考:http://takari.io/2015/03/20/mmp.html

PS。请记住,空文件夹不属于 git