有没有办法用Eclipse生成的ant脚本制作一个jar?

时间:2017-01-11 06:00:23

标签: ant jar eclipse-neon

令我惊讶的是,Eclipse(Neon)for Java生成的build.xml文件没有包含jar任务调用的元素。与代码生成的情况一样,我认为您必须使用它并且不进行编辑,以便您可以重新生成 - 或 - 完全避免代码生成。生成的文件中的注释表明可以通过导入扩展功能来避免编辑。

<!-- WARNING: Eclipse auto-generated file.
              Any modifications will be overwritten.
              To include a user specific buildfile here, simply create one in the same
              directory with the processing instruction <?eclipse.ant.import?>
              as the first entry and export the buildfile again. -->

我以为我可以在名为<?eclipse.ant.import?>的第二个文件中使用export.xml元素。在ant脚本中,每个构建文件应该有一个项目,所以现在有第二个项目依赖于第一个项目中的目标。

重新生成build.xml会显示它按预期包含“导入”。

<import file="export.xml"/>

不幸的是,这不起作用。我从命令行运行ant似乎导致导出/ jar项目被忽略。

带有import元素的生成脚本(嵌套在第7行)...

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="ohana1">
    <property environment="env"/>
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.8"/>
    <property name="source" value="1.8"/>
    <import file="export.xml"/>
    <path id="ohana1.classpath">
        <pathelement location="bin"/>
        <pathelement location="../export/ohana1/commons-collections-3.2.1.jar"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    <target name="clean">
        <delete dir="bin"/>
    </target>
    <target depends="clean" name="cleanall"/>
    <target depends="build-subprojects,build-project" name="build"/>
    <target name="build-subprojects"/>
    <target depends="init" name="build-project">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}">
            <src path="src"/>
            <classpath refid="ohana1.classpath"/>
        </javac>
    </target>
    <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
    <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
        <copy todir="${ant.library.dir}">
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </copy>
        <unzip dest="${ant.library.dir}">
            <patternset includes="jdtCompilerAdapter.jar"/>
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </unzip>
    </target>
    <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
        <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
        <antcall target="build"/>
    </target>
</project>

export.xml文件旨在制作jar ...

<?eclipse.ant.import?>
<project basedir="." default="export" name="ohana1Export">
    <target depends="build,make-jar" name="export"/>
    <target name="make-jar">
        <jar destfile="../export/ohana1/${ant.project.name}.jar" basedir="bin"/>
    </target>
</project>

请注意,Eclipse Ant编辑器会抱怨此export.xml文件,因为此项目/构建文件中不存在名为build的目标,它是一个依赖项。 build目标位于生成的build.xml中。这个错误可能来自一个“愚蠢”的编辑器,所以我继续进行ant的运行。从命令行调用ant我发现没有jar文件。

如果您需要导出ant文件并且人员应该维护满足所有要求的.jar脚本,我是否应该断定Eclipse的ant脚本生成器是无用的?

1 个答案:

答案 0 :(得分:0)

是的,我认为导出的build.xml在Eclipse Neon中是无用的,如果打算制作.jar

具体做以下几点。

  • 手动编写导出ant的简单.jar脚本。这篇文章底部的链接有关于脚本可能的样子的逐字文本。您可以使用内置的Xml Editor通过New > Other > XML > XML File创建这个可能被称为makeJar.xml的新文件并保存。如果Package Explorer中显示的图标仍然是刷新项目的纯XML文件图标,则可能会将图标更改为Ant文件图标。将来,您可以使用Open With来获取Ant Editor而不是XML Editor。此脚本将替换用户通过Eclipse执行的.jar的手动导出。
  • 此脚本可以添加到Project > Properties > Builders。它将在Builders列表中排在第二位。构建器列表中的第一个是Java Builder,它应该已经存在。调用Eclipse构建时,将按照构建器列表中显示的顺序处理整个构建器列表。因此,不仅会生成.class个文件,还会生成.jar个文件。

实现的是更高的自动化,因为现在集成了.class代和.jar代,这可能是在尝试生成{失败的尝试时使用导出的build.xml的问题。 {1}}。

以下是.jar处的对话框,您可以使用该对话框创建新的构建器。选择Project > Properties > Builders,然后选择New。我将名称Ant Builder提供给新的makeJar

Builders

以下是新Builder构建器的对话框,您可以通过该对话框浏览到Ant,这是您创建buildfile文件的手动编写的Ant脚本。在此示例中,脚本为.jar。它还允许您浏览脚本运行时使用的makeJar.xml

Configuration of the new Ant Builder

设置新的构建器后,项目“干净”或项目“构建”将创建base directory个文件以及.class

Eclipse关于此主题的文档在链接中。请注意,似乎无法链接包含指令的确切页面,因此您必须浏览文档树到“Ant buildfiles as project builders”部分。

Link to Eclipse and Ant

相关问题