我在构建时遇到问题,我必须通过Apache Ivy解决非标准工件。
问题:
要求:
有没有人解决过类似的问题,或者分享一些有用的信息?
或者我可能以错误的方式接近问题?从我到目前为止在网上发现的情况来看,人们似乎只是使用Ivy下载文件并在事后对其进行手动后处理(使用Ant /其他),而不是实际解决更复杂的。
由于
PS:我不关心安装程序是否也放入常春藤下载缓存中,但我只想下载安装程序一次(而不是两个依赖项)。
答案 0 :(得分:5)
调用“ivy:retrieve”的问题是你还需要在 ivy.xml 中添加一个“artifact”标签(带有URL),以便检索一个依赖项而不是在Maven资源库中找到......
我不喜欢这个有两个原因
理想情况下,应该是您的存储库设置决定如何下载各种罐子,这就是我喜欢打包器解析器的原因。即使我想要的库不在Maven中,我也可以配置常春藤来处理它。
以下是将jreleaseinfo项目转换为常春藤依赖项的示例(托管在sourceforge中,我在Maven中找不到它)
的ivy.xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="ivy_packager"/>
<dependencies>
<dependency org="ch.oscg" name="jreleaseinfo" rev="1.3.0"/>
</dependencies>
</ivy-module>
宣布两个解析器。默认值为Maven2,另一个是打包程序,配置为在本地查找指令。 (另见Ivy Roundup项目)
ivysettings.xml
<ivysettings>
<settings defaultResolver="maven2"/>
<resolvers>
<ibiblio name="maven2" m2compatible="true"/>
<packager name="repackage" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache">
<ivy pattern="file:///${basedir}/repository/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="file:///${basedir}/repository/[organisation]/[module]/[revision]/packager.xml"/>
</packager>
</resolvers>
<modules>
<module organisation="ch.oscg" name="jreleaseinfo" resolver="repackage"/>
</modules>
</ivysettings>
魔法包含在“packager”文件中。在解决时,这将用于生成ANT脚本,该脚本既下载又提取所需的jar。 (无需将此逻辑放入 build.xml )
库/ ch.oscg / jreleaseinfo / 1.3.0 / packager.xml
<packager-module version="1.0">
<property name="name" value="${ivy.packager.module}"/>
<property name="version" value="${ivy.packager.revision}"/>
<property name="zipname" value="${name}-${version}"/>
<resource dest="archive" url="http://sourceforge.net/projects/jreleaseinfo/files/jreleaseinfo/jreleaseinfo%201.3.0/jreleaseinfo-1.3.0.zip/download" sha1="9386d92758e627d04c2480b820731fd538b13a3f" type="zip"/>
<build>
<move file="archive/${zipname}/${zipname}.jar" tofile="artifacts/jars/${name}.jar"/>
</build>
</packager-module>
为了减少文件数量,我省略了模块的 ivy.xml 。这似乎是可选的,除非您要声明它应该存在于公共存储库中的许可证和其他属性。
答案 1 :(得分:-1)
我认为这非常简单:'常春藤:检索'a_installer然后将a.j和a-lib解压缩到你的lib目录(或任何你想要的地方)。这应该很容易与ant?
我不得不怀疑是否有一些你没有提及的复杂功能阻止你这样做。