Maven 如何在主POM和子POM上引用属性文件';s

Maven 如何在主POM和子POM上引用属性文件';s,maven,maven-profiles,Maven,Maven Profiles,我有一个主POM文件,它定义了两个概要文件:QA和Production。它使用properties maven插件设置一些变量,wildfly maven插件随后使用这些变量将包部署到web服务器 大概是这样的: [波姆大师] <profile> <id>qa</id> <build> <plugins> <plugin>

我有一个主POM文件,它定义了两个概要文件:QA和Production。它使用properties maven插件设置一些变量,wildfly maven插件随后使用这些变量将包部署到web服务器

大概是这样的: [波姆大师]

    <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>

质量保证
org.codehaus.mojo
属性maven插件
1.0.0
初始化
读取项目属性
../build-qa.properties
关于儿童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>

fhng.apps
fhng构建所有
1
(...)
org.wildfly.plugins
wildfly maven插件
1.1.0.11
安装
部署
${wildfly.server}
${wildfly.port}
${wildfly.username}
${wildfly.password}
myapp.war
主POM位于项目根目录上,每个特定的web应用程序位于子文件夹上。如果我从每个特定的项目文件夹运行mvn install,这将起作用。我非常想从主pom文件夹运行“mvn-Pqa干净安装”。但是它失败了,因为主pom引用..\build-qa.properties,该属性在每个项目中都有效,但在父目录中显然无效

哪里有办法解决这个问题?是否可以引用相对于主POM文件夹的文件,而不考虑构建了哪个特定POM?我理解这种方法打破了maven的前提,即父包不一定存在于我们的工作目录中

作为替代方案,是否有方法将属性文件引用为父包的工件?那么maven能够从repo中获得父包并在其中使用一个文件

我也会接受一种方法,在父pom上“跳过”ou“禁用”初始化/编译/安装阶段,这样它就不会尝试读取.properties文件


谢谢大家!

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

一、本案:

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


另外,请记住,空文件夹不会提交到git

您似乎使用了大约4个属性。为什么您更喜欢配置文件
qa
中的外部文件而不是直接定义?因为我不想要源代码管理上的Wildfly管理接口的生产凭据。我希望在调用maven之前创建具有生产凭据的属性文件。您可以将凭据写入环境变量并通过
${env.wildfly.password}