Java 在build.xml中解析来自另一个项目的ivy依赖项
免责声明:我是使用Ant+Ivy的新手 我有以下eclipse配置: 项目A取决于项目B和项目C ProjectB取决于ProjectC 每个项目都有自己的ivy.xml文件 ProjectA有一个build.xml文件,如下所示:Java 在build.xml中解析来自另一个项目的ivy依赖项,java,ant,ivy,Java,Ant,Ivy,免责声明:我是使用Ant+Ivy的新手 我有以下eclipse配置: 项目A取决于项目B和项目C ProjectB取决于ProjectC 每个项目都有自己的ivy.xml文件 ProjectA有一个build.xml文件,如下所示: (...) <ivy:resolve file="../ProjectC/ivy.xml" /> <ivy:cachepath pathid="ivy.deps.default" conf="default" /> <ivy:cach
(...)
<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 ...)
(…)
(...)
(…编译项目B…)
(…编译项目A…)
因此,运行这个build.xml会导致错误,即ProjectC无法编译,因为它缺少一个本应通过ivy:resolve命令解析的*.jar文件
我的问题是:
- 如何生成一个build.xml来自动从子项目中检索依赖项并编译所有子项目
- 将ProjectB构建到驱动器上类似“SharedLibrary”的目录中。(漂亮的小JAR文件)
- 注意ProjectB的常春藤文件。它设置组织、工件名称、版本等
- 将“SharedLibrary”添加到您的ivy
列表中,以便ivy在其中查找依赖项 - 添加ProjectB作为ProjectA的依赖项(使用ProjectB常春藤中的注释信息)
Pro-Tip:代替“共享库”目录,考虑使用一些类似的方法来管理工件并从中拉出来。
我建议将每个项目与自己的常春藤文件分开。让每个项目都是独立的,并将其jar发布到共享存储库中,而不是试图解决另一个项目中的依赖关系。最后,对于多模块项目,您可以使用ivy buildlist任务,根据每个模块的ivy文件中记录的相互依赖关系,以正确的顺序构建每个模块。另请参见: