是否有可能在运行时获取属性中的Maven依赖项?

时间:2012-08-09 14:12:02

标签: maven maven-2

我正在处理我们在POM中使用LATEST和RELEASE关键字以获得某种依赖关系的情况(依赖项和项目都归我们所有,所以我们控制什么是LATEST和RELEASE ......和我们一次只支持一个版本)。使用这些关键字可以最大限度地减少发布后所需的维护。

构建过程中有一个步骤必须从解压缩的依赖项中复制DLL,但由于我们没有指定特定的版本,因此我们将解压缩的依赖项的版本号硬编码,并且必须在每次发布后更新它。有没有办法在Maven属性的运行时获取此依赖项的版本?

maven-dependency-plugin的属性目标(http://maven.apache.org/plugins/maven-dependency-plugin/index.html)获取工件在本地存储库中的位置(不是我正在寻找什么)。 depends-maven-plugin(此处显示为http://team.ops4j.org/wiki/display/paxexam/Pax+Exam+-+Tutorial+1)可以生成包含各种依赖项及其版本的文件,但使用该文件需要让进程读取文件并利用该信息。我想知道是否有更多的“Maven方式”,例如访问依赖版本的属性。

编辑:为了澄清,我们需要版本号,以便我们可以访问解压缩依赖项的目录来复制文件。

1 个答案:

答案 0 :(得分:0)

我不确定你对'maven way'是什么意思,但是在看了你已经提到过的相同插件后我做了类似的事情:

  <build>
<plugins>
  <plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.5</version>
    <executions>
      <execution>
        <phase>initialize</phase>
        <goals>
          <goal>execute</goal>
        </goals>
        <configuration>
          <source>                                                                                                                                                                                                                                                   
            project.properties.put('firstdependencyinthepom', project.dependencies[0]['version'])                                                                                                                                                                              
            project.properties.put('seconddependencyinthepom', project.dependencies[1]['version'])                                                                                                                                                                            
          </source>
        </configuration>
      </execution>
    </executions>
  </plugin>

然后我能够分别用$ {firstdependencyinthepom}和$ {seconddependencyinthepom}来引用这些依赖项的版本。