首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有办法用Eclipse生成的ant脚本制作jar吗?

有办法用Eclipse生成的ant脚本制作jar吗?
EN

Stack Overflow用户
提问于 2017-01-11 06:00:22
回答 1查看 1.8K关注 0票数 1

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

代码语言:javascript
复制
<!-- 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. -->

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

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

<import file="export.xml"/>

不幸的是,这是行不通的。运行ant (我在命令行中这样做)似乎只会导致导出/jar项目被忽略。

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

代码语言:javascript
复制
<?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..。

代码语言:javascript
复制
<?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编辑器抱怨这个export.xml文件,因为这个项目/构建文件中不存在名为build的目标(它是一个依赖项)。build目标位于生成的build.xml中。这个错误可能来自一个“愚蠢”的编辑器,所以我开始运行ant。从命令行调用ant,我发现没有生成jar文件。

如果您需要导出一个ant文件,那么我是否应该得出结论,Eclipse的.jar脚本生成器是无用的,并且一个人应该维护满足所有需求的ant脚本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-12 07:54:56

是的,在我看来导出的build.xml是无用的,就像Eclipse一样,如果目的是制造一个.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中。它将在建筑商名单中排在第二位。在构建者列表中的第一位是应该已经存在的Java Builder。当调用Eclipse构建时,将按照Builders列表中显示的顺序处理整个Builders列表。因此,不仅会生成.class文件,而且还会生成.jar

实现的是更大的自动化,因为.class生成和.jar生成现在集成了,这可以说是使用导出的build.xml来生成.jar的失败尝试的关键。

下面是Project > Properties > Builders的对话框,您可以使用它来创建一个新的生成器。选择New,然后选择Ant Builder。我给新的makeJar取名为Builder

下面是新的Ant生成器的对话框,它允许您浏览到buildfile,这是手动编写的创建.jar文件的Ant脚本。在本例中,脚本是makeJar.xml。它还允许您在运行脚本时浏览到要使用的base directory

在设置了新的生成器之后,一个项目“干净”或项目“构建”将创建.class文件和.jar

Eclipse有关此主题的文档位于链接处。请注意,似乎不可能将包含说明的确切页面链接起来,因此您必须浏览文档树到关于"Ant作为项目构建器“的部分。

指向Eclipse和Ant的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41583724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档