私の Java プログラムには maven 3.0.5 と aether 1.13.1 ライブラリが埋め込まれており、次のように使用します。
ProjectBuildingResult projectBuildingResult =
projectBuilder.build(myArtifact, projectBuildingRequest);
ここの ${spring.version} など、pom ファイルで使用されるすべてのプロパティが正常に解決されます。
<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()
期待どおり、「${spring.version}」ではなく「3.1.4.RELEASE」を返します。
ただし、プロパティ${project.artifact.selectedVersion.majorVersion}
は解決されないため、
projectBuildingResult.getProject().getDependencies().get(1).getVersion()
「2」ではなく「${project.artifact.selectedVersion.majorVersion}」を返します。
何故ですか?これを解決するにはどうすればよいですか?