0

我无法从 Maven 模块访问 properties父部分中定义的属性。事实上,当我启动下面的构建时,warName 是默认的。

这是父 Pom

....
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.speed.pms</groupId>
    <artifactId>PMS-Main</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
        <name>PMS Main Build Project</name>

    <properties>
            <context-root>PMS-CUSTOM</context-root>
        </properties>
     <modules>
        <module>../PMS-WEB</module>
     </modules>
....

这是模块

...
 <parent>
        <groupId>com.speed.pms</groupId>
        <artifactId>PMS-Main</artifactId>
        <version>1.0.0</version>
      </parent>
    <artifactId>PMS-WEB</artifactId>
    <packaging>war</packaging>
    <name>PMS-WEB Webapp</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <web.resource.dir>src/main/webapp</web.resource.dir>
    </properties>
    <build>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <!-- Context root from parent project -->
                    <warName>${context-root}</warName>
                    <webResources>
                        <resource>
                            <directory>${web.resource.dir}</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
....

虽然我可以使用 ${project.parent.arctifactId} 属性。我也尝试 ${project.parent.properties.context-root} 但没有成功。它应该很简单,但我不明白这是我的错误吗?不应该是从模块中的父级继承的属性吗?

4

2 回答 2

2

Maven 用户列表中的人帮助我找到解决方案。我发布回复

虽然父 pom 中的 ../PMS-WEB 部分引用同一目录中的子级,但您的 / 未定义,因此期望父级上一级,而不是同一级。

我在中更改子模块父部分

<parent>
    <groupId>com.speed.pms</groupId>
    <artifactId>PMS-Main</artifactId>
    <version>1.0.0</version>
    <relativePath>../PMS-Main/</relativePath>
</parent>

一切正常。

感谢米洛斯

戴维德

于 2013-11-25T10:27:16.820 回答
0

还有另一种解决方案。Maven 3 在第一步中寻找上pom.xml一级目录中的父级。如果他们在那里找不到此文件,请尝试pom.xml从存储库中提取。

因此解决方案是在子项目中运行 maven 之前安装父项目。

于 2014-06-23T10:16:20.167 回答