К моему удивлению, файл build.xml
, созданный Eclipse (Neon) для Java, не имеет элемента, содержащего вызов задачи jar
. Как часто бывает с генерированием кода, я думаю, вы должны использовать его и не делать никаких изменений, чтобы вы могли регенерировать или полностью избежать генерации кода. Комментарий в сгенерированном файле предполагает, что можно избежать изменений, расширив возможности путем импорта.Есть ли способ сделать банку с созданным скриптом мудреца Eclipse?
<!-- 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
, который я делаю из командной строки, просто приводит к игнорированию проекта export/jar
.
Сформированный скрипт с импорта элемента (вложенной на 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>
Обратите внимание, что затмение Редактор Ant жалуется на этот файл export.xml
, потому что целевой объект с именем build
, который является зависимым, не существует в этом файле project/buildfile. Цель build
находится в сгенерированном build.xml
. Эта ошибка может исходить от «немого» редактора, поэтому я пошел делать ant
. Вызывая ant
из командной строки, я обнаружил, что нет файла jar
.
Должен ли я сделать вывод, что генератор для Eclipse ant
скрипт бесполезно, если вам нужно экспортировать .jar
файл, и что человек должен поддерживать ant
скрипт, который отвечает всем требованиям?