首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven Antrun和Dependencies

Maven Antrun和Dependencies
EN

Stack Overflow用户
提问于 2009-10-16 21:35:55
回答 4查看 16.9K关注 0票数 9

(见下文编辑)

我不能只使用类路径的原因是因为我需要管理一些非java库,并且正在编译一个非java项目。

我试图在一个antrun调用中使用maven依赖项,下面是maven站点上的文档:

http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html

在页面底部:

代码语言:javascript
复制
<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,我有以下内容:

代码语言:javascript
复制
<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编译时得到的信息:

代码语言:javascript
复制
[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来进行”存储“,这会显示出大量的日志输出,而这些输出正在被存储。

令人感兴趣的是,我明确指定的依赖项没有显示在列表中,而且当我根据我看到的一个条目切换到一个键时,我仍然会得到错误。

EN

回答 4

Stack Overflow用户

发布于 2009-10-23 00:28:26

作为亚伦H.上述答案的补充,我不得不将插件的版本设置为1.3,这样才能真正发挥作用。我在使用它时没有具体的版本,得到的是1.1 (似乎什么都不起作用)。

代码语言:javascript
复制
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.3</version>
        ...
      </plugin>
票数 4
EN

Stack Overflow用户

发布于 2009-10-16 21:46:06

如果没有您在POM中输入什么的示例,就很难说出来,但是请考虑一个具体的示例。假设您的POM引用了log4j (groupId=log4j,artifactId=log4j)。我相信这就是在Ant文件中引用JAR的方式:

代码语言:javascript
复制
<property name="log4j.jar" refid="maven.dependency.log4j:log4j:jar.path"/>
<echo message="Where is the Log4J JAR?: ${log4j.jar}"/>

理想情况下,您不必引用特定的JAR,而是引用整个类路径以获得适当的作用域,正如插件的稀疏文档所示。

如果您仍然有问题,请为您正在使用的Maven POM依赖项发布<dependency>标记,我可以尝试更具体一些。

我看了看插件代码来确认。

票数 2
EN

Stack Overflow用户

发布于 2009-11-02 13:08:16

有一个文档中的错误。这条路的形式应该是:

代码语言:javascript
复制
<property name="mvn.dependency.jar" 
  value="${maven.dependency.my.group.id.my.artifact.id.classifier.jar.path}"/>

因此,您的log4j依赖项的正确键是:

代码语言:javascript
复制
maven.dependency.log4j.log4j.jar.path

还请注意,它应该是value=而不是refid=,所以完整的属性是:

代码语言:javascript
复制
<property name="log4j.jar" 
      value="${maven.dependency.log4j.log4j.jar.path}"/>
<echo message="My Dependency JAR-Path: ${log4j.jar}"/> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1580562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档