2017-01-11 9 views
0

К моему удивлению, файл 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 скрипт, который отвечает всем требованиям?

ответ

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. Этот скрипт заменит ручной экспорт .jar, который в противном случае пользователь выполнил бы через Eclipse.
  • Этот скрипт может быть добавлен в Project > Properties > Builders.Он будет помещен вторым в списке Строителей. Сначала в списке Строителей находится Java Builder, который должен уже существовать. Когда вызывается сборка Eclipse, весь список Builders будет обработан в порядке, показанном в списке Builders. Таким образом, будут созданы не только файлы .class, но и .jar.

Что достигается больше автоматизации, так как .class поколение и поколение .jar теперь интегрированы, что, возможно, был смысл использовать экспортированный build.xml в неудачной попытке сгенерировать .jar.

Это диалоговое окно Project > Properties > Builders, которое вы можете использовать для создания нового Builder. Выберите New и выберите Ant Builder. Я дал имя makeJar новым Builder.

Builders

Вот диалоговое окно для нового Ant Builder, который позволит вам просматривать на вашем buildfile который является вашим вручную написанный Ant скрипт, который создает .jar файл. В этом примере скрипт makeJar.xml. Он также позволяет вам просматривать base directory, который будет использоваться при запуске скрипта.

Configuration of the new Ant Builder

После установки нового Builder, проект «чистый» или проект «строить» будет создавать .class файлы, а также .jar.


Документация Eclipse по этому вопросу находится по ссылке. Обратите внимание, что невозможно соединить точную страницу, содержащую инструкции, поэтому вам нужно просмотреть дерево документации в разделе «Ant buildfiles как разработчики проекта».

Link to Eclipse and Ant