【发布时间】:2014-05-07 07:21:46
【问题描述】:
我们有大约 100 个组件(不久的将来会更多)配置为使用 IVY+ANT 构建系统。
问题是它的慢:(。为了加快系统速度,我们想使用ANT多线程功能,但因为这些组件可以相互依赖,我们不能简单地这样做. 这个问题的可能解决方案是首先我们在 LIST 中找出一组相互依赖且独立的组件(Like MAEVEN)。一旦我们有了这个列表,我们就可以分发构建任务到 ANT。
那么我们有什么方法可以从 IVY 获得这种 LIST(开箱即用)?我们已经查看了 ivy:buildlist 任务,但它似乎没有给出这种类型的结果。我想知道实现它有多难,这应该很容易返回,因为 IVY 已经有了信息和依赖图,为什么它没有列出呢?
其他信息
我们有许多项目,即独立的项目,它们都有自己的 ivy.xml 定义对 3rd 方 jar 以及彼此之间的依赖关系。例如,我们有项目 A、B 和 C,其中 ivy.xml 如下所示;
项目 A - ivy.xml 仅限第 3 方部门
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="XYZ" branch="14" module="A" />
<configurations ...
</configurations>
<publications>
<artifact name="A" type="" ext="jar" />
</publications>
<dependencies>
<dependency org="junit" name="junit" rev="4.8.2" conf="test"/>
</dependencies>
</ivy-module>
项目 B - ivy.xml 定义对项目 A 的依赖
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="XYZ" branch="14" module="B" />
<configurations ...
</configurations>
<publications>
<artifact name="B" type="" ext="jar" />
</publications>
<dependencies>
<dependency org="XYZ" name="A" rev="14" conf="compile,test"/>
<dependency org="junit" name="junit" rev="4.8.2" conf="test"/>
</dependencies>
</ivy-module>
项目 C - ivy.xml 仅限第 3 方部门
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="XYZ" branch="14" module="C" />
<configurations ...
</configurations>
<publications>
<artifact name="C" type="" ext="jar" />
</publications>
<dependencies>
<dependency org="junit" name="junit" rev="4.8.2" conf="test"/>
</dependencies>
</ivy-module>
现在,如果您看到我们不能为 Project B 使用多线程构建,因为我们必须先构建 Project A,然后再启动 B。在上述情况下,如果不知何故我们发现我们可以在一个线程构建集/组 1 中同时执行 两个 (2) 线程(这是可以且可取的),即 A然后是 B 和另一个只有 C 的线程集/组 2。
所以我的问题是如何从 IVY 获得这个单独的组/组信息?
【问题讨论】:
-
我查看了那个确切的问题,实际上,您将不得不重新实现大量 Maven(或其他现代工具)功能(Maven 中的反应器)。如果该问题对您的构建至关重要,则建议考虑迁移到 Maven。