在 Eclipse 中使用 ANT 脚本导出为 JAR 时删除并生成 javadoc

Delete and generate javadoc when exporting as JAR with ANT script in Eclipse

我有一个 ANT 脚本(.xml 文件)用于在 Eclipse 中将项目导出为 JAR。它只是 "export as runnable JAR" 生成的文件,经过修改以包含源代码和 javadoc(doc 和 src 文件夹)。

我想修改它,以便当我 运行 脚本时,它首先生成 javadoc,然后创建文件,这样 javadoc 在 JAR 中始终是最新的,而不需要大量额外的点击.此外,如果 class 或包被删除或移动或更改名称,当我在 Eclipse 中生成 javadoc 时,未被覆盖的旧 doc 文件保留在 doc 文件夹中,以确保 JAR 中的文档是真实的最新我希望 ANT 脚本删除 doc 文件夹,然后生成 javadoc,然后创建 JAR。

这是脚本:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE xml>
<project default="create_run_jar" name="Create Runnable Jar for Project PROJECTNAME with Jar-in-Jar Loader">
    <!--this file was created by Eclipse Runnable JAR file Export Wizard-->
    <!--ANT 1.7 is required-->
    <!--define folder properties-->
    <property name="dir.buildfile" value="."/>
    <property name="dir.workspace" value="${dir.buildfile}/.."/>
    <property name="dir.jarfile" value="../../project_jars"/>
    <target name="create_run_jar">
        <jar destfile="${dir.jarfile}/JARNAME.jar">
            <manifest>
                <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
                <attribute name="Rsrc-Main-Class" value="PACKAGENAME.CLASSNAME"/>
                <attribute name="Class-Path" value="."/>
                <attribute name="Rsrc-Class-Path" value="./ opencsv-3.9.jar"/>
            </manifest>
            <zipfileset src="jar-in-jar-loader.zip"/>
            <fileset dir="${dir.buildfile}/bin"/>
            <fileset dir="${dir.buildfile}" includes="doc/**"/>
            <fileset dir="${dir.buildfile}" includes="src/**"/>
            <zipfileset dir="../../libraries" includes="opencsv-3.9.jar"/>
        </jar>
    </target>
</project>

Ant 有一个 <javadoc> task 用于生成 Javadoc 文件。

对于您的脚本,<javadoc> 应该放在 <target> 中,该 <target>create_run_jar 目标之前运行。

为确保删除或重命名的 Javadoc 类 和包不会复制到 JAR 文件中,请在 <javadoc>:

之前放置一个 <delete>
<delete dir="${dir.buildfile}/doc" />
<javadoc ... />

我将在 depends 中添加两个目标到我的 jar 创建目标中,例如

<project default="create_run_jar" depends="delete_javadocs,generateJavaDocs" name="Create Runnable Jar for Project PresidentAggregateRanker with Jar-in-Jar Loader">

delete_javadocs 将删除现有的 doc 目录。 generateJavaDocs 将生成 javadocs。

您还可以使用属性文件添加 javadocs 位置。您可以在构建文件中导入属性文件。

我把这个放在前面 <target name="create_run_jar" ...">:

<target name="generate_java_docs">
    <delete dir="${dir.doc}"/>
    <javadoc sourcepath="${dir.src}" destdir="${dir.doc}" classpathref="build.classpath"/>
</target>

classpathref 属性用于消除烦人的警告。上面引用的路径和属性的定义:

<property name="dir.buildfile" value="."/>
<property name="dir.workspace" value="${dir.buildfile}/.."/>
<property name="dir.eclipse" value="${dir.workspace}/.."/>
<property name="dir.libraries" value="${dir.eclipse}/libraries"/>
<property name="dir.src" value="${dir.buildfile}/src"/>
<property name="dir.doc" value="${dir.buildfile}/doc"/>
<property name="filename.libraryjar" value="opencsv-3.9.jar"/>
<path id="build.classpath">
    <fileset dir="${dir.libraries}">
        <include name="${filename.libraryjar}"/>
    </fileset>
</path>