java - 如何使用 ant 构建 jar 文件?

标签 java xml build ant jvm

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

但是我在项目中向他提供了记录器.properties文件。

因此,错误会飞出:

[javac] error: package org.apache.logging.log4j does not exist

error: cannot find symbol
[javac] error: private static final Logger logger = LogManager.getLogger(Hello.class);

我有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>

还有这个结构

enter image description here

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

最佳答案

我明白了。

<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 - 如何使用 ant 构建 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59347129/

相关文章:

java - 使用递归求最大值

Java/Scala - 将 xml 转换为 json

java - Maven 在 `package` 目标期间复制 webapp 资源后如何做?

java - 简单的 Java Ant 构建问题

java - 我的循环有什么问题吗?

java - Swing 中具有拖放功能的 HTML 库页面

java - 当用户滑动到第一个 fragment 时,我该如何 toast

XML XPath - 只有满足子条件时才选择父文本

c# - LINQ to XML 查询中的 NullReferenceException

java - 重复类 com.google.android.gms Android Studio 的问题