Maven Properties Plugin - 在继承中不起作用

时间:2012-01-11 23:33:17

标签: maven-plugin

我有这个目录结构

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

Submodule1继承自root和sububmodules继承自submodule1

子子模块具有依赖关系,它使用来自submodule1的project.properties的属性来定义其版本。 即在子子模块中

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

在Submodule1的project.properties中,我有

themodules.version = 1.0

所以我使用了properties-maven-plugin,在root 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>

然后我在root级别运行mvn install。 Maven说它无法解析依赖项中的$ {themodules.version}。

我还在子模块级别运行mvn install,但仍无法解析。

帮助

2 个答案:

答案 0 :(得分:0)

这里没有与继承有关,你只需要在你的root pom.xml中将project.properties的位置添加到properties-maven-plugin的配置中:

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

然后在根级别执行mvn clean install。

答案 1 :(得分:0)

与其他开发人员签入的代码有类似的问题。 他们在 pom.xml 根目录下有 properties-maven-plugin

我把它移到了每个使用这些属性的子项目中,并使它成为路径相对的。 由于主pom位于 $ {project.basedir} ,因此子项目将位于 ../$ {project.basedir} 中。

也就是说,我将插件添加到这些poms中的插件元素中,并将文件元素设置为 $ {project.basedir} / .. /default-pom.properties

当我这样做时,它有效。