У меня возникли некоторые проблемы с получением Eclipse для соблюдения тестовой зависимости Maven - он обнаруживает путь компоновки и работает с компиляцией / разрешением javadoc eclipse.
Пример с библиотеками Java EE
Я использовал библиотеку javaee-api-6.0
для компиляции моего приложения Java EE.
Однако для целей модульного тестирования я хотел иметь доступ не только к API - мне нужна была реализация.Поэтому я включил встраиваемые библиотеки Glassfish с тестовой областью примерно так:
<repositories>
<repository>
<id>glassfish-extras-repository</id>
<url>http://download.java.net/maven/glassfish/org/glassfish/extras</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>compile</scope>
<type>jar</type>
</dependency>
</dependencies>
Работает, как и ожидалось, с Maven
Насколько я понимаю, из-за <scope>test</scope>
зависимости Glassfish, онне будет включен в регулярную фазу compile
.
Поскольку обе зависимости будут включены в фазу test-compile
, я был уверен, что ставим зависимость glassfish перед зависимостью javaee-api, чтобы первая была предпочтительнее последней при компиляции тестовых классов.,Итак, при использовании только Maven для сборки эта конфигурация не является проблемой.
Не работает должным образом в Eclipse
Однако при использовании m2e и Eclipse зависимость glassfish указана вмой путь сборки:
Поскольку зависимость glassfish указана перед зависимостью java-ee-api, похоже, что Eclipse использует неверный lib (glassfish вместо java)-ee-api) для проверки / компиляции / поиска javadocs.(На самом деле, я не уверен на 100%, что при компиляции используется неправильная библиотека - это зависит от того, использует ли Eclipse Maven для компиляции, используемой при проверке кода, и я не знаю, так ли это или нет - нопоиск javadoc определенно ссылается на неправильную библиотеку)
Вопрос
Как я могу остановить Eclipse от использования библиотеки glassfish за исключением случаев, когда выполняются юнит-тесты?Я хочу убедиться, что мои поиски компиляции / Javadoc происходят на API, а не конкретная реализация этого API.