2010-10-06 4 views
5

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

Мой вопрос - это то, что было бы самым простым способом сделать это.

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

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

ответ

2

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

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

+0

Именно то, что я искал. Спасибо! – Isaac

0

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

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

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

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

+0

Hi Ladlestein, да, я знаю о предоставляемых задачах, как вы упомянули в (1) выше. То, что я хочу, - это научиться писать о задачах Ant, а не о том, как реализовать определенную функциональность (поскольку я знаю, что в Eclipse имеется множество функций, встроенных в Eclipse). Итак, рассмотрим случай извлечения в свойство Ant, разделенный запятыми список всех проектов в рабочей области (да, я знаю, что Ant4Eclipse делает это, но я ищу подход на основе Eclipse-API для достижения этого) , – Isaac

+0

@ Исаак, который уточняет, что вы ищете. Я думаю, вы захотите посмотреть класс EclipseStarter, описанный выше. Документы начинаются с http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/adaptor/EclipseStarter.html. – Ladlestein

+0

спасибо, однако, я думаю, что я был немного неясен. Класс EclipseStarter поможет мне запустить рабочий стол, сделать что-нибудь и выйти. Это будет вариант (2) в вашем ответе выше. Я действительно хочу узнать, как писать задачи, которые могут выполняться под экземпляром * running * Eclipse - те, которые относятся к категории (1) в вашем ответе выше. – Isaac

1

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

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

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

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

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

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

+1

Это звучит на верном пути ко мне. Создайте новый подключаемый модуль Eclipse (создайте новый проект Plug-In, а не только проект Java). Добавьте зависимости (откройте «MANIFEST.MF») на (существующих) плагинах Eclipse, которые вы хотите вызвать. Вы можете редактировать объявления зависимостей, чтобы дать вам «комнату для маневра» в версиях, если хотите. (Заметим, что Eclipse хорошо разделен на «ядро» против «ui», поэтому вы должны делать все, что хотите, без необходимости поднимать или взаимодействовать с любым пользовательским интерфейсом.). Ваш новый плагин предоставляет расширение для указанная точка расширения Ladlestein. Удачи! –

+0

Я только что пришел к выводу, что несколько минут назад то, чего я хочу достичь, не может быть достигнуто, просто сбросив простой JAR; все, что работает под Eclipse или с Eclipse, должно соответствовать OSGi и тому, как разрабатываются плагины/функции - поэтому я не должен быть исключением. Спасибо вам обоим! – Isaac

 Смежные вопросы

  • Нет связанных вопросов^_^