我的 java 程序嵌入了 maven 3.0.5 和 aether 1.13.1 库,我使用它如下:
ProjectBuildingResult projectBuildingResult =
projectBuilder.build(myArtifact, projectBuildingRequest);
pom文件中用到的所有属性,比如这里的${spring.version},都解析成功了。
<project>
<groupId>my_group</groupId>
<artifactId>my_artifact1</artifactId>
<version>2.3.0-SNAPSHOT</version>
<properties>
<spring.version>3.1.4.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>my_group</groupId>
<artifactId>my_artifact2</artifactId>
<version>${project.artifact.selectedVersion.majorVersion}</version>
</dependency>
</dependencies>
</project>
那是,
projectBuildingResult.getProject().getDependencies().get(0).getVersion()
正如预期的那样,返回“3.1.4.RELEASE”而不是“${spring.version}”。
但是,该属性${project.artifact.selectedVersion.majorVersion}
没有得到解决,所以
projectBuildingResult.getProject().getDependencies().get(1).getVersion()
返回“${project.artifact.selectedVersion.majorVersion}”而不是“2”。
这是为什么?如何解决这个问题?