2

我的 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”。

这是为什么?如何解决这个问题?

4

0 回答 0