Maven来自模块的自定义父属性

Maven来自模块的自定义父属性,maven,maven-3,maven-module,Maven,Maven 3,Maven Module,我无法从Maven模块访问父模块的properties部分中定义的属性。 事实上,当我在下面启动构建时,warName是默认的 这是父Pom .... <modelVersion>4.0.0</modelVersion> <groupId>com.speed.pms</groupId> <artifactId>PMS-Main</artifactId> <version>1.0.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>
....
。。。。
4.0.0
com.speed.pms
主管道
1.0.0
聚甲醛
PMS主要建设项目
定制
../PMS-WEB
....
这是模块

...
 <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>
....
。。。
com.speed.pms
主管道
1.0.0
PMS-WEB
战争
PMS-WEB应用程序
UTF-8
src/main/webapp
org.apache.maven.plugins
maven战争插件
2.4
${context root}
${web.resource.dir}
....
而我可以使用${project.parent.arctifactId}属性。
我还尝试了${project.parent.properties.context root},但没有成功。这应该很简单,但我不明白哪一个是我的错误?不应该是从模块中的父级继承的属性吗?

Maven用户列表中的人员帮助我找到解决方案。我张贴了回复

而您的../PMS-WEB部分在父pom中 引用同一目录中的子目录,您的 /未定义,因此应为父级 向上一层,而不是同一层

我在中更改子模块父部分

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

com.speed.pms
主管道
1.0.0
../PMS主管道/
而且每一件事都是有效的

多亏了米洛斯


大卫

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

所以,解决方案是在子项目中运行maven之前安装父项目