Написание задачи Ant для Eclipse - PullRequest
5 голосов
/ 06 октября 2010

Я хотел бы написать простую задачу Ant, которая будет взаимодействовать с рабочим пространством Eclipse для получения некоторой информации из него. Я хотел бы иметь возможность использовать различные API-интерфейсы Eclipse (например, IWorkspace).

У меня вопрос: какой самый простой способ сделать это?

Я отлично знаю платформу Eclipse как ее пользователя, но не знаю, как разрабатывать Eclipse. Я понимаю, что во время выполнения моя задача Ant должна вызываться в той же JRE, что и рабочая область - это ограничение, с которым я хочу быть связан.

Я начал с создания Java-проекта, который будет содержать мою задачу Ant. Я полагаю, что единственное, что мне сейчас мешает, - это определить зависимость JAR от JAR-файлов Eclipse. Я, очевидно, не хочу зависеть от одного конкретного JAR Eclipse, так как они версионны (например, плагин Eclipse «Resources»). Возможно ли иметь время сборки моего Java-проекта в зависимости от того, "какой текущий JAR-файл для плагина ресурсов"?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2011

Я думаю, что эта статья в значительной степени решает вашу проблему: http://www.ibm.com/developerworks/rational/library/09/eclipsecustomanttasks/

Она нацелена на IBM Rational Application Developer, но та, что основана на Eclipse и AFAIS, не слишком много не затмений.что-то конкретное здесь происходит, по крайней мере, не в отношении специфики того, как сделать задачу доступной в Eclipse (написание определения плагина и т. д.).

1 голос
/ 07 октября 2010

Итак, вы хотите задачу Ant, которая выполняется в Eclipse.И, как вы говорите, ясно, что эти задачи используют Eclipse API.На данный момент я не очень понимаю, как они это делают.Я посмотрел на источник нескольких из них, и у меня все еще есть вопросы.

Чтобы найти расположение всех задач Ant, предоставленных Eclipse, выполните поиск плагинов для org.eclipse.ant.core.antTasks.Когда я это делаю, я вижу около двадцати расширений, многие из которых определяют несколько задач.

Если вы получаете исходный комплект для плагина, который вносит вклад в одну из этих задач, вы можете посмотреть на источник для него.RefreshLocalTask ​​находится в org.eclipse.core.resources;к сожалению, когда я импортирую этот пакет в мое рабочее пространство как исходный проект, исходный текст для задач Ant не будет правильно связан.Для них есть отдельный jar (внутри пакета), и, хотя источник находится в комплекте, неясно, как Jar компилируется.В результате в моей рабочей области нет источника компиляции Ant.

Вы также можете использовать Google для источника задачи Ant;вот источник 3.6.0 для RefreshLocalTask.

В любом случае, в источнике вы можете увидеть вызовы org.eclipse.core.resources.ResourcePlugin, которые иллюстрируют то, что вам, вероятно, нужно.

Ах, я вижу в описании точки расширения - щелкните правой кнопкой мыши по одному из этих результатов поиска и выберите «Показать описание» или перейдите туда из редактора манифеста - что есть флаг, который вы можете установить, «eclipseRuntime»;текст подразумевает, что, если он задан, Eclipse запустит задачу на той же виртуальной машине.

0 голосов
/ 06 октября 2010

Вероятно, вам следует больше рассказать о том, что вы хотите сделать, потому что вы можете выбрать несколько маршрутов.

  1. Eclipse предоставляет некоторые задачи Ant, которые вы можете использовать в своих скриптах сборки. Здесь несколько.Их больше, поэтому ищите «задачи муравья» в документации по Eclipse;они разбросаны по разным страницам.Настройки Eclipse (Window..Preferences, затем выберите Ant / Runtime и посмотрите на «Внесенные записи» на вкладке Classpath) показывает список задач Ant, которые Eclipse вносит в среду выполнения при каждом вызове Ant из Eclipse;Вы можете вызывать любую из этих задач самостоятельно, если вы включите правильный jar.
  2. Можно запустить Eclipse из задачи Ant, потому что можно запустить Eclipse из Java.Вы должны включить правильные банки и сделать правильные звонки;вам также нужно правильно настроить Eclipse."org.eclipse.core.runtime.adaptor.EclipseStarter" должен дать вам некоторые подробности.
  3. Возможно, вы можете использовать одну или несколько переменных, которые Eclipse определяет для использования при запуске Ant (или любой другой программы).Попробуйте создать конфигурацию внешнего инструмента (в нижней части меню «Выполнить») - выберите Ant Build и попробуйте настроить его с помощью аргументов (на вкладке «Главная») или переменных среды (на вкладке «Среда»).Оба предоставляют вам доступ к переменным Eclipse.Но, конечно, это просто значения, которые вы можете передать в свой скрипт Ant, а не обработчики чего-либо, для чего вы можете вызвать метод.

Чего вы не можете сделать: я почти уверен, что когда Eclipseзапускает Ant, он всегда находится в отдельной виртуальной машине, без возможности перезвонить в Eclipse.

Так что, возможно, вам стоит рассказать больше о том, что вы хотите сделать.

...