我很有兴趣在我的Java项目中构建一个“胖罐子”,其中Ivy解析了依赖项。我必须将引用的jar文件从常春藤缓存复制到本地项目对我来说似乎很浪费,所以我想避免这样做。我找到了一个有效的解决方案,但想知道是否有一个稍微简单的方法。在下面的代码中我认为最简单的方法是使zipfileset行工作,但它没有 - jar包含在构建的jar文件中,但它们不会被扩展。如果相反我使用它正常工作的部分,但似乎有点大惊小怪。有没有更简洁的方法呢?
<target depends="clean, build" name="jar">
<ivy:cachefileset setid="Ping.runclasspath" conf="default" />
<jar destfile="dist/Ping.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="build"/>
<zipfileset refid="Ping.runclasspath"/> <--- this does NOT work
<restrict> <--- this DOES work
<name name="**/*.class"/>
<archives>
<zips>
<fileset refid="Ping.runclasspath"/>
</zips>
</archives>
</restrict>
</jar>
</target>
答案 0 :(得分:2)
您是否尝试过zipgroupfileset?我不知道它是否会在你的例子中起作用,但它似乎有一个类似的存在目的。
答案 1 :(得分:1)
我必须在我的一个蚂蚁项目中做同样的事情。 Chris建议使用zipgroupfileset
作品:
<target depends="clean, build" name="jar">
<ivy:cachefileset setid="Ping.runclasspath" conf="default" />
<jar destfile="dist/Ping.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="build"/>
<zipgroupfileset refid="Ping.runclasspath"/>
</jar>
</target>