我想从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
但是,我希望仅运行时依赖项(即排除编译依赖项)。到目前为止,我最好的想法是获取运行时依赖项和编译依赖项,并迭代运行时依赖项以查找那些不在编译依赖项中的内容,但我还没有弄清楚如何执行此操作。
有什么想法吗?
答案 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}" />
所以我可以使用运行时范围......