【问题标题】:Using Maven in Ant for jar dependencies在 Ant 中使用 Maven 获取 jar 依赖项
【发布时间】:2014-08-10 11:27:00
【问题描述】:

我是 Maven 新手,但对 Ant 很满意,我喜欢 maven 下载 jar 及其依赖项的方式,所以我希望在我的 Ant 构建脚本中包含 ma​​ven 依赖项。我已经看到了如何使用,但是这里所有的 jar 文件都在.m2 folder, instead i need all the jars downloaded in the lib folder of my project 中下载。 这可以做还是不做,?如果可以的话,任何人都可以建议我怎么做。

【问题讨论】:

  • 如果您更喜欢 ANT,我建议您使用 Apache ivy ant.apache.org/ivy
  • 这会下载项目lib文件夹中的jar吗
  • 有人能告诉我为什么投反对票吗?这个问题是没有用还是没有意义。
  • 是的,ivy 中的“retrieve”任务默认会填充一个“lib”目录。我个人使用更强大的缓存路径任务结合配置来控制我的构建/测试和运行时类路径。我建议浏览关于 SO 的各种问题,请参阅:stackoverflow.com/questions/tagged/ivy

标签: java maven ant jar build


【解决方案1】:

这是一个非常合理的问题。

使用 maven ant 任务确实会使用通用 maven 存储库位置,仅仅是因为这将使您的所有 maven 项目受益,而不仅仅是您的本地项目。

默认情况下,Maven 为所有本地项目使用共享缓存,仅仅是因为为每个项目下载 commons-lang 有点荒谬。

如果您愿意,可以指定执行的 localRepository 位置(请参阅http://maven.apache.org/ant-tasks/reference.html#localRepository)。

另外,正如另一位用户所说,IVY 也非常适合您的用例。如果您只需要下载依赖项,那么IVY 就是这样做的。 Maven 可以,但包含更多内容,这取决于您是否真的想探索这些选项。

【讨论】:

    【解决方案2】:

    我找到了一种方法来做到这一点。 您必须在工件标记中提供 filesetid 并使用 "filesetid" 复制到给定位置

    <target name="maven-test">
      <artifact:dependencies filesetid="build-dependency-jars">
        <dependency groupId="gorup_id" artifactId="artifact_id" version="version" />
      </artifact:dependencies>
    
    <copy todir="./lib/">
        <fileset refid="build-dependency-jars" />
        <mapper type="flatten" />
    </copy>
    
    </target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2010-12-16
      • 2011-11-04
      • 1970-01-01
      • 2014-05-25
      • 2012-10-25
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多