我正在使用ANT创建一个.jar
文件。这是我的build.xml
:
<?xml version="1.0"?>
<project name="stack_overflow" default="info">
<target name="info">
<jar destfile="util.jar" includes="com/appl/constants">
<manifest>
<attribute name="Main-Class"
value="com.appl.constants.Applicationinfo.class"/>
</manifest>
</jar>
</target>
</project>
当我运行ant jar
时,会生成util.jar
文件,但其中只有manifest.mf。
这是我得到的错误:
Buildfile: C:UsersSrikrishnaworkspaceSpringExample5buildbuild.xml
info:
[jar] Building MANIFEST-only jar: C:UsersSrikrishnaworkspace
SpringExample5build${web.dir}libutil.jar
BUILD FAILED
C:UsersSrikrishnaworkspaceSpringExample5buildbuild.xml:5:
Could not create almost empty JAR archive (
C:UsersSrikrishnaworkspaceSpringExample5build${web.dir}libutil.jar
(The system cannot find the path specified))
Total time: 200 milliseconds
我的文件夹结构是:
src
|
com.appl.constants
|
Applicationinfo.class
为什么我的罐子里什么都没放?
您需要为jar任务指定basedir
属性,或者使用嵌套的<fileset>
来告诉jar任务在哪里查找类。
下面是一个示例构建文件。请注意,在jar目标中有一个对"build/classes"的basedir引用
<project>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="jar">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/CalculateStats.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="mypackage.CalculateStats"/>
</manifest>
</jar>
</target>
<target name="run">
<java jar="build/jar/CalculateStats.jar" fork="true"/>
</target>
</project>