我想制作一个非常简单的ant脚本,它可以做一件事,就是建立一个jar文件。但是当我尝试使用一个非常简单的例子时,由于依赖于我的源依赖的罐子,它会失败。那么,在构建Ant目标时,如何指定jar类需要在类路径中使用jar。
<project name="project" default="default">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="lib.dir" value="//tomcat/common/lib"/>
<description> description </description>
<!-- =================================
target: default
================================= -->
<target name="default" depends="compile" description="description">
<jar destfile="/path/to/dir/Library.jar">
</jar>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
</project>
答案 0 :(得分:3)
您的问题并不完全清楚 - 我怀疑您的意思是要编译源代码(使用javac
任务),然后从结果中构建一个jar文件。如果不是这种情况,我看不到源依赖关系的位置。如果 ,则jar
任务无关紧要。
在javac
任务中,使用classpath属性指定其他jar依赖项。
答案 1 :(得分:3)
这是使用Eclipse Runnable JAR导出向导生成的ANT脚本。这个项目可以更新Google Spreadsheet上的统计信息,以便与一些朋友一起进行小型幻想棒球联赛。它通过抓取ESPN.com播放器页面来获取统计数据。
manifest
元素内的Class-Path属性用于设置jar使用的类路径。这违约了“。”但是我必须明确地添加我的src路径,以便log4j能够获取log4j.properties。
zipfileset
元素是我的源使用的外部jar,我想要包含在我的jar中。我怀疑这可能就是你要找的东西。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project cob_fantasy_baseball">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required -->
<target name="create_run_jar">
<jar destfile="C:/workspace/cob_fantasy_baseball/cob_fantasy_baseball.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="com.me.cob_fantasy_baseball.UpdateCobStats"/>
<attribute name="Class-Path" value=".;src/com/me/cob_fantasy_baseball"/>
</manifest>
<fileset dir="C:/workspace/cob_fantasy_baseball/classes"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-core-1.0.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-spreadsheet-2.0.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/jericho-html-2.6/lib/jericho-html-2.6.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/apache-log4j-1.2.15/log4j-1.2.15.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/jaf-1.1.1/activation.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/mail.jar"/>
<zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/lib/smtp.jar"/>
<fileset dir="C:/workspace/cob_fantasy_baseball/src/com/me/cob_fantasy_baseball"/>
</jar>
</target>
</project>
此外,这里是jar任务的Ant文档的链接:http://ant.apache.org/manual/Tasks/jar.html
答案 2 :(得分:1)
根据您的示例,您可以将libs放在javac中:
<javac srcdir="${src.dir}" destdir="${classes.dir}">
<classpath>
<pathelement location="${lib.dir}/lib1.jar"/>
<pathelement location="${lib.dir}/lib2.jar"/>
</classpath>
</javac>
答案 3 :(得分:0)
这是我们用于构建Timeline开源项目的ant文件。这很直截了当。它不构建jar,但它确实使用库来最小化JS文件。
http://simile-widgets.googlecode.com/svn/timeline/trunk/build.xml
拉里