Maven配置文件属性不是"重写"

Naz*_*zar 13 java maven-3 maven

我有Maven多模块项目,具有这样的结构:

家长聚甲醛项目

- module1

- module2

在parent-pom-project中我有这样的pom.xml

    <modules>
        <module>module1</module>
    </modules>
...
    <profiles>
        <profile>
           <id>local</id>
           <properties>
               <prop>local_prop</prop>
           </properties>
        </profile>
        <profile>
           <id>test</id>
           <modules>
                <module>module2</module>
           </modules>
           <properties>
               <prop>test_prop</prop>
           </properties>
        </profile>
    </profiles>
Run Code Online (Sandbox Code Playgroud)

在所有pom.xml文件中我都有这样的标记:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>
Run Code Online (Sandbox Code Playgroud)

资源目录中的module1和module2,我有包含这样文本的属性文件:

prop=${prop}
Run Code Online (Sandbox Code Playgroud)

问题是之后

mvn clean install

要么

mvn clean install -Ptest

甚至

mvn clean install -P test

我明白了

丙= local_prop

如果我还构建了构建模块2的用户测试配置文件,但是从本地配置文件中使用了属性.我使用Maven 3.0.3.有人有什么想法吗?

Oli*_*ger 8

您可以尝试使用mvn help:effective-pom -Ptest命令查看构建中使用的参数.

有关详细信息,请参阅http://maven.apache.org/plugins/maven-help-plugin/plugin-info.html.


car*_*ing 5

${basedir}在资源目录前面添加一个:

<directory>${basedir}/src/main/resources</directory>

这应该可以解决您的问题。我的解释是,如果您是从顶层构建的,那么在多模块项目中,它无法正确选择路径(对于子模块而言)。因此,在尝试过滤时,它将应用到其他目录(实际的根级聚合器),而不是子目录。

希望对您有所帮助。


Naz*_*zar 0

我解决了卸载当前 eclipse 的 Maven 插件的问题并使用另一个插件。现在我使用这个: - Maven 集成:http://m2eclipse.sonatype.org/sites/m2e - WTP 的 Maven 集成:http://m2eclipse.sonatype.org/sites/m2e-extras/

早期我使用的是这个http://download.eclipse.org/technology/m2e/releases/。我无法解释这种行为,但可能是插件更改了某些配置。