我正在使用Ant来构建一些Java项目.
在某些情况下,我lib/在JAR文件的表单中有一个包含外部依赖项的目录.
在构建期间,我创建了一个捆绑的jar,它包含项目的代码以及依赖项,通过向目录中的zipfileset每个jar添加bundle jar文件a lib/.
问题是,每次我添加一个jar或更改名称时,我都需要记住更新build.xml文件,因为我找不到以zipfilesets自动方式添加这些文件的方法,这些方式将包括特定模式中的所有jar(例如lib/*.jar).
这样做有更好的方法吗?
我已经考虑为此编写自己的Ant任务,或者使用Groovy的ant API以编程方式执行此操作,但是想知道是否有使用"vanilla"ant的方法.
jon*_*scb 53
在我的目标中,我有这样的事情:
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar" excludes=""/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${mf.classpath}"/>
</manifest>
</jar>
Run Code Online (Sandbox Code Playgroud)
这是我如何构建我的类路径:
<path id="build.classpath">
<fileset dir="${basedir}/">
<include name="${lib.dir}/*.jar"/>
</fileset>
</path>
<pathconvert property="mf.classpath" pathsep=" ">
<path refid="build.classpath"/>
<mapper>
<chainedmapper>
<flattenmapper/>
<globmapper from="*.jar" to="lib/*.jar"/>
</chainedmapper>
</mapper>
</pathconvert>
Run Code Online (Sandbox Code Playgroud)
mf.classpath用于上面发布的包目标.我从其他地方复制了这部分内容,所以我并不熟悉它.
快速编辑.Javac也需要了解这些罐子.
<path id="jars">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<target name="compile">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="jars" debug="on"/>
</target>
Run Code Online (Sandbox Code Playgroud)
Jas*_*Day 30
用一个zipgroupfileset.例如:
<target name="jar">
<jar destfile="foo.jar" basedir="${dir.classes}">
<zipgroupfileset dir="lib" includes="*.jar"/>
</jar>
</target>
Run Code Online (Sandbox Code Playgroud)
将zipgroupfileset被记录与邮编任务.
小智 8
对于那些使用NetBeans的人来说,如何使用zipgroupfileset捆绑的库创建JAR存档:
<target name="-post-jar">
<property name="store.jar.name" value="MyJarName"/>
<property name="store.dir" value="dist"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<zip destfile="${store.jar}">
<zipfileset src="${store.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete file="${store.dir}/temp_final.jar"/>
<delete dir="${store.dir}/lib"/>
<delete file="${store.dir}/README.TXT"/>
</target>
Run Code Online (Sandbox Code Playgroud)
我已将此目标定义添加到build.xml文件的末尾.目标名称是-post-jar.
| 归档时间: |
|
| 查看次数: |
67539 次 |
| 最近记录: |