Зависимость от фрагмента плагина Eclipse

#eclipse #eclipse-plugin #eclipse-rcp

Вопрос:

У меня есть приложения Eclipse с некоторыми фреймами для тестирования функциональности плагина.

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

Поэтому мне нужен плагин (или фрагмент), который будет включен ТОЛЬКО во фрагмент (возможно ли это??) чтобы использовать эти утилиты.. Как лучше всего создать такую структуру?

(Эти утилиты не должны включаться в рабочие плагины и не должны быть развернуты в рабочей среде)

Спасибо!

Ответ №1:

Вам следует создать обычный плагин для ваших служебных классов и добавить его в качестве зависимости от ваших тестовых фрагментов. Использование фрагмента для служебных классов звучит неправильно — каким будет основной пакет этого фрагмента?

Эти утилиты не должны включаться в рабочие плагины и не должны быть развернуты в рабочей среде

Я бы предположил, что ваши тестовые фрагменты уже исключены из развертывания в производстве. Вы должны иметь возможность настроить все аналогичным образом, чтобы исключить плагин утилиты. Как именно это сделать, зависит от настроек вашего проекта.


Обновление для ситуации, описанной в комментариях:

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

Фрагменты тестов полезны для модульных тестов для тестирования внутренних классов, но на самом деле не подходят для интеграционных тестов, поскольку они легко вызывают проблемы с зависимостями, как у вас сейчас.

Такого рода тесты следует перенести в их собственный плагин (обычно у меня есть один плагин интеграционного теста для всего приложения, который также содержит тестовые утилиты). Тогда этот плагин для тестирования интеграции может зависеть от всего, что ему требуется, без конфликтов.

Комментарии:

1. Вот что я сделал. Но у меня круговая зависимость. Давайте приведем пример: Плагин A-мой основной плагин для тестирования. FA-это фрагмент плагина. U-это плагин утилиты. FA включает в себя U для использования утилит. НО U включает в себя A как зависимость (так как мне нужны некоторые классы данных от A). Эта настройка компилируется , но когда я создаю функцию, я получаю ошибку с циклической зависимостью. Только когда я создаю функцию….

2. Хорошо, это все немного усложняет. Я предполагаю, что U также зависит от классов данных других плагинов, таких как плагин B? В этом случае я бы сначала проверил, можно ли удалить все зависимости от этих классов данных из U, например, переместив служебные классы/методы, использующие классы из A в FA, из B в FB и т. Д., Чтобы U содержал только общие утилиты, общие для всех фрагментов.

3. Другим подходом здесь было бы переместить все классы данных из A, B и т.д. В новые плагины (DA, DB). Если вы позволите U зависеть только от DA, то FA может зависеть от U без циклических зависимостей. Если у вас все еще есть циклические зависимости (потому что, например, B зависит от A), вам, возможно, потребуется разделить U на отдельные плагины (давайте назовем их UA, UB и т. Д.) Однако это может быть большой работой, поэтому я, вероятно, сначала попробую первый подход.

4. Проблема заключается в типах данных, которые находятся в плагине A и используются во всех плагинах приложений. Я не могу перенести эти занятия. Возможно, использование Maven/Tycho в качестве системы сборки «исправит» проблему. Теперь обходной путь прост… Просто закройте плагин U в Eclipse…. Фрагменты не строятся.. но они не включены в экспорт продукции!

5. Тихо-хороший выбор и намного лучше, чем экспорт Eclipse, но я не думаю, что это поможет в этом вопросе. Даже если он будет построен, вы, вероятно, получите ошибки циклической зависимости во время выполнения. Я думаю, что первый подход (перемещение служебных методов/классов, использующих типы данных, во фрагмент соответствующего плагина) является самым простым решением.