Ant ApacheIvy:解析嵌入在安装程序中的依赖项
我有一个构建问题,我必须通过ApacheIvy解决非标准工件 问题:Ant ApacheIvy:解析嵌入在安装程序中的依赖项,ant,build,build-automation,dependencies,ivy,Ant,Build,Build Automation,Dependencies,Ivy,我有一个构建问题,我必须通过ApacheIvy解决非标准工件 问题: 我依赖于两个工件(a.jar和a-lib.jar) 这两个依赖项仅作为单个安装程序(a_installer.jar)的一部分 安装程序可以下载,嵌入的工件本身不能 可以操纵安装程序来解压缩所需的依赖项 要求: 我必须在构建过程中解析/下载工件(我不能将安装程序或提取的工件与代码一起保存) 我不能使用存储库来存储提取的工件 分类/扩展常春藤/任何东西都很好 有没有人解决过类似的问题,或者分享一些有用的信息 或者我处理问题
- 我依赖于两个工件(a.jar和a-lib.jar)
- 这两个依赖项仅作为单个安装程序(a_installer.jar)的一部分李>
- 安装程序可以下载,嵌入的工件本身不能
- 可以操纵安装程序来解压缩所需的依赖项
- 我必须在构建过程中解析/下载工件(我不能将安装程序或提取的工件与代码一起保存)
- 我不能使用存储库来存储提取的工件
- 分类/扩展常春藤/任何东西都很好
PS:我不在乎安装程序是否也被放入常春藤下载缓存中,但我只想下载一次安装程序(而不是两个依赖项)。我认为这非常简单:“常春藤:检索”一个安装程序,然后将a.j和a-lib解压到你的lib目录中(或任何你想要的地方)。这应该很容易做到与蚂蚁
我想知道是否有一些您没有提到的复杂情况阻止了您这样做。调用“ivy:retrieve”的问题是,您还需要在ivy.xml中添加一个“artifact”标记(包括URL),以便检索Maven respository中未找到的依赖项 我不喜欢这个有两个原因
声明两个解析器。默认值是Maven2,另一个是配置为在本地查找指令的打包机。(另见常春藤综合项目)
ivysettings.xml
魔法包含在“packager”文件中。在解析时,这将用于生成一个ANT脚本,用于下载和提取所需的JAR。
(无需将此逻辑放入build.xml中)
repository/ch.oscg/jreleaseinfo/1.3.0/packager.xml
为了减少文件数量,我省略了模块的ivy.xml。这似乎是可选的,除非您要声明其许可证和其他属性,这些属性应该存在于公共存储库中。IvyRoundup是一种公共打包机回购。但包装商正是我们要走的路。
<?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>
<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-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>