如何为项目/lib 中的本地 jar 创建 Ivy 依赖项?
Posted
技术标签:
【中文标题】如何为项目/lib 中的本地 jar 创建 Ivy 依赖项?【英文标题】:How to create an Ivy dependency for local jars inside your project/lib? 【发布时间】:2011-01-13 16:26:04 【问题描述】:我有几个 jar 文件(其中一些相互依赖),我正在尝试让 ivy 为我的项目管理它们。
我不想创建“本地”(基于用户目录)存储库,因为我希望其他用户能够检查我的 svn 项目并在没有本地/共享存储库设置的情况下运行它。由于各种原因,我无法将这些文件添加到我们正在使用的实际存储库中。
项目依赖于这些文件,我在 SVN 中使用它们。过去,我有正常的 ivy 依赖 xml 文件。这些文件使用一个设置 xml 文件指向远程存储库。过去,在最后一刻,我让 ant 使用构建任务将这些文件从 lib 文件夹复制到构建文件夹中。这感觉像是一种破坏性的滥用,它忽略了 ivy 文件系统解析器的功能。
(用于 3 个可构建项目的 ivy.xml 和 build.xml 在另一个基本目录中使用相同的 ivysettings.xml。)
我觉得我已经完成了 90% 的工作,我应该在 ivysettings.xml 中将我的文件系统解析器指向什么,以便在解析器链中进行第一次解析,检查 projectdir/lib 中的 jar 文件?
【问题讨论】:
【参考方案1】:你看过常春藤任务buildlist吗?
您可以使用它来控制 3 个模块的构建顺序。随着每个模块的构建,它可以发布到本地存储库,确保 jar 及时出现以供链中的下一个模块使用。
build.xml
ivysettings.xml
--> module1 --> build.xml
ivy.xml
--> module2 --> build.xml
ivy.xml
--> module3 --> build.xml
ivy.xml
您的设置文件可以被所有项目共享。它表明您构建的模块在本地可用,其他一切都来自项目的所有用户可用的默认存储库(在本例中为 Maven)
<ivysettings>
<settings defaultResolver="maven2"/>
<resolvers>
<ibiblio name="maven2" m2compatible="true"/>
<filesystem name="local">
<ivy pattern="$local.rep.dir/.."/>
<artifact pattern="$local.rep.dir/.."/>
</filesystem>
</resolvers>
<modules>
<module organisation="org.me" name="module1" resolver="local"/>
<module organisation="org.me" name="module2" resolver="local"/>
..
</modules>
</ivysettings>
最后,当您在外部发布时,您可以使用 ivy install 任务将您已经在本地发布的模块复制到最终存储库位置
【讨论】:
以上是关于如何为项目/lib 中的本地 jar 创建 Ivy 依赖项?的主要内容,如果未能解决你的问题,请参考以下文章
如何在eclipse中使用Ivy + IvyDE将不同的jar放到lib和web-inf/lib中