我有这个目录结构
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,但仍无法解析。
帮助
答案 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
当我这样做时,它有效。