在ant中获取maven运行时依赖项

时间:2011-08-24 07:22:26

标签: ant maven dependencies

我想从ant中获取maven的运行时依赖项集。我正在使用maven ant任务。

我知道您可以按范围限制依赖关系(see docs):

<artifact:dependencies filesetId="dependency.fileset" useScope="runtime">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>

并且范围选项(来自文档)是:

•compile - Includes scopes compile, system and provided
•runtime - Includes scopes compile and runtime
•test - Includes scopes system, provided, compile, runtime and test

但是,我希望运行时依赖项(即排除编译依赖项)。到目前为止,我最好的想法是获取运行时依赖项和编译依赖项,并迭代运行时依赖项以查找那些不在编译依赖项中的内容,但我还没有弄清楚如何执行此操作。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您需要以下内容:

...
<artifact:pom id="maven.project" file="pom.xml"/>

<artifact:dependencies useScope="runtime"
                       filesetId="dependencies.runtime"
                       pomRefId="maven.project"
                       settingsFile="${settings.xml}"/>
...

然后您可以像往常一样使用dependencies.runtime文件集。

我希望这更有意义。

答案 1 :(得分:0)

所以这就是我试图获得运行时和编译文件集的区别(尽管这假设编译文件集中没有任何内容也不在运行时文件集中)

<artifact:dependencies filesetId="runtime" scopes="runtime">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>
<artifact:dependencies filesetId="compile" scopes="compile">
  <artifact:pom file="pom.xml" id="myProject" />
</artifact:dependencies>

<difference id="difference" >
  <resources refid="runtime" />
  <resources refid="compile" />
</difference>

但是,这并没有产生我预期的结果,所以我做了以下操作,发现运行时文件集包含编译依赖项。

<echo message="${toString:runtime}" />
<echo message="${toString:compile}" />

所以我可以使用运行时范围......