2010-10-27 3 views
2

ВопросЗатмение Удлинитель Обновления Classpath

дана Classpath Контейнер Я написал как плагин/расширение, как добавить его в пути к классам, автоматически?

фон

Хорошо, так что я опытный Java Developer, но очень новой для написания плагинов для Eclipse. Я занимаюсь поиском в Интернете, следуя учебным пособиям и читаю исходный код других плагинов в течение нескольких дней. Я точно знаю, что хочу, но не совсем точно, как это сделать.

Прямо сейчас, в Eclipse, когда я нажимаю ресурс и выберите "Запуск теста JUnit", как в:


for some reason, my pics don't work anymore. I'll fix this soon...


За кулисами, Плагин m2eclipse каким-то образом генерирует конфигурацию запуска, которая содержит контейнер пути класса Maven Dependencies, например:

alt text

Мое предположение, что «зависимостями Maven» контейнер путь класса добавляется через некоторую точку расширения используется плагин M2Eclipse. Аналогично, я хочу добавить свой контейнер classpath автоматически, всякий раз, когда пользователь запускает тест JUnit, поэтому он отображается в разделе «Пользовательские записи». Какие точки расширения можно использовать, чтобы сделать что-то подобное? Я смотрел на org.eclipse.jdt.core.classpathContainerInitializer, но я не уверен, что это будет делать то, что мне нужно.


Ideal Результат

В идеале, я хотел бы написать плагин, который принимает каждую запись в путь сборки проекта и добавляет его в путь к классам конфигурации запуска (каждый раз, когда новая конфигурация запуска создается с помощью: Run As> Тест JUnit). Это должно быть поведение Eclipse по умолчанию, но это не так!

Моим лучшим решением было бы просто добавить мой собственный контейнер классов классов в путь сборки конфигурации запуска автоматически. В конце дня я просто хочу один classpath для любого java-кода, который наша команда запускает/запускает. Это не должно быть так сложно!

Любой совет, как достичь любого из этого, будет оценен по достоинству! Даже основные указатели на то, где искать, чтобы понять, как конкретные точки расширения предназначены для использования (основные API JavaDocs ужасны). Спасибо,

  • gMale
+0

Вы можете использовать Alt + Shift + F1, чтобы открыть шпион Plug-in и получить подробную информацию о плагине M2Eclipse, а затем изучить источник. – porcoesphino

ответ

1

Roostergx предоставляет часть ответа (т. Е. Как создать контейнер класса).Вторая часть, как вы признаете, заключается в том, как добавить ее автоматически.

Я бы рекомендовал использовать точку расширения org.eclipse.ui.startup. Это позволяет вам вносить код, который запускается (в значительной степени) как можно раньше при запуске Eclipse. При каждом запуске вы можете выполнять итерацию по всем проектам и посмотреть, требует ли какой-либо из существующих проектов созданный вами контейнер классов.

+0

спасибо. Это больше похоже на то, что я ищу. Должна быть какая-то другая точка расширения для внесения кода, который выполняется непосредственно перед выполнением конфигурации запуска. В конце дня все, что я хочу, это контейнер класса, который 1) добавляет все банки в каталоге Lib к пути сборки 2) по умолчанию включен во всех конфигурациях запуска. Это должно быть встроено в Eclipse по умолчанию! – gMale

+0

Нет, нет расширения, чтобы делать то, что вы предлагаете. Самое близкое, что нужно сделать, это создать собственную конфигурацию запуска. Это может быть прямой подкласс/копия запуска JUnit, но он также добавит ваши дополнительные библиотеки. –

+0

Я, наконец, решил проблему с корнем пару недель назад, поставив свои банки в путь/в/project/WebContent/WEB-INF/libs. Это отлично работало, поскольку банки в этом каталоге автоматически включаются в контейнер классов * Web Apps Libraries * classpath во всех конфигурациях запуска. Я соглашусь с этим, так как ваш ответ ближе всего к решению моего вопроса выше (то есть, я думаю, что это действительно сработает). – gMale

0

В статье на http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/index.html предоставляет EXELLENT описание и источник для плагина, который определяет проект конкретный контейнер, который включает в себя путь к классам все файлы фляги в указанном каталоге.

+0

Спасибо за ссылку. Я не рассматривал эту проблему через некоторое время ... Создание контейнера выполнимо ... но не нужно добавлять его ** вручную ** в конфигурацию запуска (т. Е. Автоматически включается всякий раз, когда кто-то нажимает * Запуск как> JUnit test *) - сложная часть. Контейнер * Maven Dependencies * работает таким образом ... так что это должно быть возможно, правильно? – gMale

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