(见下文编辑)
我不能只使用类路径的原因是因为我需要管理一些非java库,并且正在编译一个非java项目。
我试图在一个antrun调用中使用maven依赖项,下面是maven站点上的文档:
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html
在页面底部:
<property name="mvn.dependency.jar"
refid="maven.dependency.my.group.id:my.artifact.id:classifier:jar.path"/>
<echo message="My Dependency JAR-Path: ${mvn.dependency.jar}"/> 不管我怎么努力,我都做不成这件事。我试过了${}关于refid的内容,我试过冒号,句号等等。在我所能想到的每一个方面都是分隔符。
有人能告诉我,对于某些常见的依赖,这种重定向应该是什么样子吗?
编辑:
感谢您的回复。
使用您的示例SingleShot,我有以下内容:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-messages</id>
<phase>compile</phase>
<configuration>
<tasks>
<property name="build.compiler" value="extJavac"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="runtime_classpath" refid="maven.runtime.classpath"/>
<property name="test_classpath" refid="maven.test.classpath"/>
<property name="plugin_classpath" refid="maven.plugin.classpath"/>
<property name="log4j.jar" refid="log4j:log4j:jar"/>
<echo message="Where is the Log4J JAR?: ${log4j.jar}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</plugin>下面是我在运行mvn编译时得到的信息:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Chat Component
[INFO] task-segment: [compile]
[INFO] ------------------------------------------------------------------------
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.pom
2K downloaded
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.jar
358K downloaded
[INFO] [antrun:run {execution: create-messages}]
[INFO] Executing tasks
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error executing ant tasks
Embedded error: Reference log4j:log4j:jar not found.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Fri Oct 16 14:54:19 PDT 2009
[INFO] Final Memory: 7M/80M
[INFO] ------------------------------------------------------------------------编辑(2):
查看链接到的源代码,我决定运行"mvn -X编译“和grep来进行”存储“,这会显示出大量的日志输出,而这些输出正在被存储。
令人感兴趣的是,我明确指定的依赖项没有显示在列表中,而且当我根据我看到的一个条目切换到一个键时,我仍然会得到错误。
发布于 2009-10-23 00:28:26
作为亚伦H.上述答案的补充,我不得不将插件的版本设置为1.3,这样才能真正发挥作用。我在使用它时没有具体的版本,得到的是1.1 (似乎什么都不起作用)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
...
</plugin>发布于 2009-10-16 21:46:06
如果没有您在POM中输入什么的示例,就很难说出来,但是请考虑一个具体的示例。假设您的POM引用了log4j (groupId=log4j,artifactId=log4j)。我相信这就是在Ant文件中引用JAR的方式:
<property name="log4j.jar" refid="maven.dependency.log4j:log4j:jar.path"/>
<echo message="Where is the Log4J JAR?: ${log4j.jar}"/>理想情况下,您不必引用特定的JAR,而是引用整个类路径以获得适当的作用域,正如插件的稀疏文档所示。
如果您仍然有问题,请为您正在使用的Maven POM依赖项发布<dependency>标记,我可以尝试更具体一些。
我看了看插件代码来确认。
发布于 2009-11-02 13:08:16
有一个文档中的错误。这条路的形式应该是:
<property name="mvn.dependency.jar"
value="${maven.dependency.my.group.id.my.artifact.id.classifier.jar.path}"/>因此,您的log4j依赖项的正确键是:
maven.dependency.log4j.log4j.jar.path还请注意,它应该是value=而不是refid=,所以完整的属性是:
<property name="log4j.jar"
value="${maven.dependency.log4j.log4j.jar.path}"/>
<echo message="My Dependency JAR-Path: ${log4j.jar}"/> https://stackoverflow.com/questions/1580562
复制相似问题