令我惊讶的是,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
脚本生成器是无用的?
答案 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
。
以下是新Builder
构建器的对话框,您可以通过该对话框浏览到Ant
,这是您创建buildfile
文件的手动编写的Ant
脚本。在此示例中,脚本为.jar
。它还允许您浏览脚本运行时使用的makeJar.xml
。
设置新的构建器后,项目“干净”或项目“构建”将创建base directory
个文件以及.class
。
Eclipse关于此主题的文档在链接中。请注意,似乎无法链接包含指令的确切页面,因此您必须浏览文档树到“Ant buildfiles as project builders”部分。