2012-03-05 51 views
1

我有一个项目使用一些旧脚本来处理源代码。我无法摆脱它,所以我想从maven调用它。获取作为maven中依赖项的jar的位置

问题是我需要传递一个jar文件的位置参数。我已经将这个jar文件列为我的pom.xml中的一个依赖项。有没有一种方法可以将jar文件的绝对位置传递给此脚本?

回答

1

这绝不是理想的,但你可以从行家打电话给你的脚本,并通过这个作为一个参数:

${settings.localRepository}/<path to artifact> 

其中path to神器是由组ID的路径和你想要的神器身份证。例如,如果你想2.2的maven-JAR插件版本的参考,你会使用这样的:

${settings.localRepository}/org/apache/maven/plugins/maven-jar-plugin/2.2/maven-jar-plugin-2.2.jar 
+0

谢谢。我想除此之外我没有太多的选择 – santiagozky 2012-03-08 09:31:52

+0

是的,你所做的事实非常规,所以这并不理想。更好的计划是将这些遗留的脚本变为原始状态,以便不再需要它们;) – Michael 2012-03-08 13:09:30

0

我喜欢Pascal Thivent's answer到类似的问题更好。您可以使用${maven.dependency.junit.junit.jar.path}表示法来引用依赖关系。 Pascal在他的回答中包含一个样本pom:

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>q2359872</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>q2359872</name> 
    <properties> 
    <my.lib>${maven.dependency.junit.junit.jar.path}</my.lib> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>process-resources</phase> 
      <configuration> 
       <tasks> 
       <echo>${my.lib}</echo> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+0

显然这只适用于使用antrun插件时,这不是我的情况 – santiagozky 2012-03-28 12:09:52

相关问题