来自Module的Maven Custom Parent属性

时间:2013-11-22 10:25:20

标签: 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</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}但没有成功。它应该很简单,但我不明白哪个是我的错误?不应该是从Module中父级继承的属性吗?

2 个答案:

答案 0 :(得分: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>

and everithings有效。

感谢milos

达维德

答案 1 :(得分:0)

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

所以解决方法是在子项运行maven之前安装父项目。