从build.xml中的另一个项目解析ivy依赖项

时间:2014-10-17 21:28:14

标签: java ant ivy

免责声明:我是使用Ant + Ivy的新手

我有以下eclipse配置:

ProjectA 取决于 ProjectB ProjectC

ProjectB 取决于 ProjectC

每个项目都拥有自己的ivy.xml文件。

ProjectA有一个build.xml文件,如下所示:

(...)

<ivy:resolve file="../ProjectC/ivy.xml" />
<ivy:cachepath pathid="ivy.deps.default" conf="default" />
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/>


<ivy:resolve file="../ProjectB/ivy.xml" />
<ivy:cachepath pathid="ivy.deps.default" conf="default" />
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/>


<ivy:resolve file="ivy.xml" />
<ivy:cachepath pathid="ivy.deps.default" conf="default" />
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/>

<path id="classpath">
    <fileset dir="${webroot}/WEB-INF/lib" erroronmissingdir="no">
        <include name="*.jar"/>
    </fileset>
    <fileset dir="${libraries}" erroronmissingdir="no">
        <include name="*.jar"/>
    </fileset>
    <path refid="ivy.deps.default"/>
</path>

    (...)

<javac destdir="c:/abc" includeantruntime="yes" classpathref="ivy.deps.default">
                        <src path="../ProjectC/src"/>
                        <classpath refid="classpath"/>
                    </javac>

 (... Compile ProjectB ...)
 (... Compile ProjectA ...)

因此,运行此build.xml会导致错误,说ProjectC无法编译,因为它缺少应该由ivy:resolve命令解析的* .jar文件。

我的问题是:

  • 如何创建一个自动从子项目中检索依赖项的build.xml,并编译所有子项目?

1 个答案:

答案 0 :(得分:1)

看起来每个项目都有一个常春藤文件,但是每个项目都没有构建文件。正如Mark在上述评论中所说,每个项目都应该单独构建。

例如:

  • 将ProjectB构建到类似&#34; SharedLibrary&#34;的目录在你的驱动器上。 (漂亮的小JAR文件)
    • 记下ProjectB的IVY文件。它设置组织,工件名称,版本等
  • 添加&#34; SharedLibrary&#34;到你的常春藤<resolvers>列表,以便IVY在那里寻找依赖
  • 将ProjectB添加为ProjectA的依赖项(使用ProjectB&#39;常春藤中的注释信息)

那应该让你参加比赛!

专业提示:而不是&#34; SharedLibrary&#34;目录,考虑使用类似Artifactory之类的东西来管理工件并从那里拉取。