Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用ant构建jar文件?_Java_Xml_Build_Ant_Jvm - Fatal编程技术网

Java 如何用ant构建jar文件?

Java 如何用ant构建jar文件?,java,xml,build,ant,jvm,Java,Xml,Build,Ant,Jvm,根据培训任务,我需要使用ant创建.jar-文件。src中普通类的组装没有问题 <path id="classpath"> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </path> <target name="init" depends="clean" description="starts"> <

根据培训任务,我需要使用
ant
创建
.jar
-文件。
src
中普通类的组装没有问题

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>
但我在项目中向他展示了
记录器
,以及
属性
文件

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>
因此,会出现错误:

[javac] error: package org.apache.logging.log4j does not exist
<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>
我有
build.xml

<?xml version="1.0"?>
<project name="Runner" default="run">
    <!-- define names of directories -->
    <property name="src" location="src"/>
    <property name="build" location="build"/>
    <property name="classes" location="${build}/classes"/>
    <!-- define all targets -->
    <target name="compile">
        <mkdir dir="${classes}"/>
        <javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false"/>
    </target>
    <target name="run" depends="compile">
        <java classname="${ant.project.name}" classpath="${classes}"/>
    </target>
    <target name="clean">
        <delete dir="${build}"/>
    </target>
    <target name="package" depends="compile">
        <jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}">
            <manifest>
                <attribute name="Main–Class" value="${ant.project.name}"/>
            </manifest>
        </jar>
    </target>
</project>
<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

如何以及在何处将Java文件中的库和属性收集到jar文件是可执行的?

首先,您需要将所需的库文件夹包含到类路径中

<path id="class.path">
  <fileset dir="lib">
    <include name="**/*.jar" />
  </fileset>
</path>
<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

并在编译目标中添加对javac任务的引用

<target name="compile">
        <mkdir dir="${classes}"/>
           <javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false">
        <classpath refid="class.path" />
      </javac>
</target>
<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

AFTEWARD将所有属性文件包含到jar

<target name="package" depends="compile">
        <jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}">
        <include name="*.properties"/>
            <manifest>
                <attribute name="Main–Class" value="${ant.project.name}"/>
            </manifest>
        </jar>
</target>
<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

我想出来了

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>

<path id="classpath">
    <fileset dir="${lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init" depends="clean" description="starts">
    <tstamp/>
</target>

<target name="clean" depends="package-to-jar" description="clean up">
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-to-jar" depends="package-external-lib" description="packing all project into a jar-file">
    <jar destfile="${jar}/${ant.project.name}.jar" basedir="${classes}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
        <zipfileset src="${external-lib}"/>
    </jar>
    <delete dir="${classes}"/>
    <delete file="${external-lib}"/>
</target>

<target name="package-external-lib" depends="compile" description="packing external libraries into a jar-file">
    <jar destfile="${external-lib}">
        <zipgroupfileset dir="${lib}">
            <include name="**/*.jar"/>
        </zipgroupfileset>
    </jar>
</target>

<target name="compile" description="compile the source">
    <mkdir dir="${classes}"/>
    <javac srcdir="${src}" destdir="${classes}" classpathref="classpath"/>
    <copy todir="${classes}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
</target>