2012-01-11 205 views
2

不工作,我有这样的目录结构的Maven插件属性 - 在继承

root 
|- pom.xml 
|- submodule1 
     |- pom.xml 
     |- project.properties 
     |- subsubmodules 
      |-pom.xml 

Submodule1从根继承和subsubmodules从submodule1继承

Subsubmodules具有使用性能从submodule1的project.properties到依赖性已经定义了它的版本。 即Subsubmodules

<dependency> 
<groupId>some.org</groupId> 
<artifactId>someartifact</artifactId> 
<version>${themodules.version}</version> 
</dependency> 

在Submodule1的project.properties,我已经

themodules.version = 1.0 

因此,我通过在根pom.xml中定义它使用的属性-行家-插件

<project> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
     <executions> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <!-- *edited from earlier post <file>etc/config/dev.properties</file>--> 
<file>${basedir}/project.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

然后我在根目录下运行mvn install。 Maven说它无法解析依赖关系中的$ {themodules.version}。

我也在子模块级别运行mvn install,它仍然无法解析。

帮助请

回答

0

没有在这里做与继承,你只需要您的project.properties的添加位置属性 - Maven的插件的配置在你的根pom.xml中:

<configuration> 
    <files> 
    <file>etc/config/dev.properties</file> 
    <file>${project.basedir}/submodule1/project.properties</file> 
    </files> 
</configuration> 

然后做mvn干净安装在根级别。

+0

对不起,我在根pom.xml中添加 $ {basedir} /project.properties,并假定它将继承到子模块pom模型。因此它应该读取子模块中的project.properties。这个假设是不正确的?鉴于继承工作是自下而上的方法,父母很难确切地知道他们的子女是谁,以及project.properties文件的确切位置在子女 – ALQH 2012-01-12 22:05:26

+0

@ALQH内,因此没有关于属性文件继承的概念,您只需要告诉properties-maven-plugin哪里是读取属性文件的确切位置。 – yorkw 2012-01-12 22:10:38

+0

我在根目录pom.xml中声明,但是当我运行mvn install时,它仍然无法传递在subsubmodules中用作依赖版本的$ {themodules.version}。它说dependency.dependency.version无效。 – ALQH 2012-01-13 01:34:37

0

也有类似的问题,另一个代码开发人员进行检查。 他们有属性 - Maven的插件的pom.xml下。

我将它移出到每个消耗属性的子项目,并使其成为相对路径。 由于主pom在$ {project.basedir},子项目将在../${project.basedir}

也就是说,我添加了插件插件元素的劲歌,并将该文件元素设置为$ {} project.basedir /../ default-pom.properties

当我这样做,它的工作。