IAm*_*aja 3 java dependencies ivy
我已经使用 Ivy 和 URL 解析器设置了我们的 Eclipse 项目,该 URL 解析器在办公室的 Web 服务器上查找工件和 ivy 文件。一切都很好。
我有几个项目是其他项目的依赖项,我想调整 Ivy 配置,以便这些依赖项可以“在本地发布”,并且依赖于它们的下游项目可以在本地解析它们。这样做将允许开发人员在一个项目中进行更改,并在依赖它的另一个项目中看到这些更改的涟漪;所有这些都无需发布到我们的官方(网络服务器)存储库。
首先,我向作为下游项目依赖项的项目(我们称之为)添加了一个本地发布任务DepProj:
<target name="publish-locally" depends="clean,dist">
<ivy:publish resolver="local" overwrite="true" pubrevision="${ivy.new.revision}">
<artifacts pattern="${distDir}/[artifact].[ext]" />
</ivy:publish>
</target>
Run Code Online (Sandbox Code Playgroud)
然后我修改了DepProj下游项目之一的 ivy.xml 文件,称为DownstreamProj:
<dependency org="ourOrg" name="DepProj" rev="latest.integration" conf="*->*"/>
Run Code Online (Sandbox Code Playgroud)
我现在正在窒息连接两者。我需要调整我们的ivy.settings文件以使用文件系统解析器。在DepProj本地发布时,可以看到先运行clean,然后dist。该dist目标创建下JAR DepProj/dist/DepProj.jar。
我想我需要将文件系统解析器(以某种方式)指向这个dist目录?但话说回来,这DepProj不是我想在本地发布的唯一项目。
我这里有大部分拼图,我只是在连接一些点时遇到了麻烦。
某种SOer能把我推向正确的方向吗?一个有用的代码示例也总是非常感谢!谢谢!
您肯定需要定义一个文件系统解析器并创建您自己的 ivysettings.xml。
您必须为其提供一个可以发布的特殊目录。这应该在您的项目之外的某个地方。
<filesystem name="local" checkmodified="true">
<ivy pattern="${basedir}/../repo/[module](-[branch])/[revision]/[artifact](-[branch])-[revision].[ext]" />
<artifact pattern="${basedir}/../[module]/[revision]/[artifact](-[branch])-[revision].[ext]" />
</filesystem>
Run Code Online (Sandbox Code Playgroud)
这将表现得像一个完全正常的存储库。解析工件将被复制到您的缓存,并从那里复制到您的检索位置。
在发布工件将被复制到那里。
您可以将路径设置为ivysettings.xml:
<property name="ivy.settings.file" value="${path_to_file}/ivysettings.xml"/>
Run Code Online (Sandbox Code Playgroud)
这将通过调用自动读取:
<ivy:settings />
Run Code Online (Sandbox Code Playgroud)
激活设置。
您还可以为特殊模块创建一个链,它首先在文件系统中查找,然后在存储库中查找:
<resolvers>
<url name="remote"/>
<filesystem name="local" checkmodified="true" />
<chain name="ourOrg" dual="true" latest="time">
<resolver ref="local"/>
<resolver ref="remote"/>
</chain>
</resolvers>
<modules>
<!-- resolver für readybank module-->
<module organisation="ourOrg" resolver="ourOrg"/>
</modules>
Run Code Online (Sandbox Code Playgroud)
IvyDe for eclipse 有一个工作区解析器,它适用于在 eclipse 中打开的任何项目。