代码之家  ›  专栏  ›  技术社区  ›  Milhous

Ant脚本示例

  •  1
  • Milhous  · 技术社区  · 17 年前

    我想制作一个非常简单的ant脚本,它做了一件事,那就是创建一个jar文件。但当我尝试使用一个非常简单的例子时,它失败了,因为它依赖于我的源所依赖的jar。那么,如何指定JAR,在构建Ant目标时,类路径中需要有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>
    
    4 回复  |  直到 17 年前
        1
  •  3
  •   martin clayton egrunin    15 年前

    您的问题并不完全清楚-我猜您的意思是希望编译源代码(使用 javac 任务)和 根据结果构建一个jar文件。如果不是这样的话,我看不出你的源代码依赖性是从哪里来的。如果 既然如此,那么 jar

    在 javac 任务中,使用classpath属性指定其他jar依赖项。

        2
  •  3
  •   martin clayton egrunin    15 年前

    下面是使用Eclipse Runnable JAR导出向导生成的ANT脚本。这是一个与一些朋友一起在谷歌电子表格上为一个小型幻想棒球联盟更新统计数据的项目。它通过抓取ESPN.com的玩家页面来获取数据。

    类中的类路径属性 manifest 元素用于设置jar使用的类路径。这是默认的“.”,但我必须显式地添加src路径,以便log4j能够获取log4j.properties。

    zipfileset

    <?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

        3
  •  1
  •   serg    17 年前

    根据您的示例,您可以将libs放入javac中:

    <javac srcdir="${src.dir}" destdir="${classes.dir}">
        <classpath>
            <pathelement location="${lib.dir}/lib1.jar"/>
            <pathelement location="${lib.dir}/lib2.jar"/>
        </classpath>
    </javac>
    
    推荐文章