2013-11-22 83 views
0

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

这是父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}但没有成功。这应该很简单,但我不明白哪个是我的错误?不应该是模块中从父项继承的属性?

回答

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> 

和everithings作品。

由于米洛斯

达维德

0

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

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