У меня есть несколько проектов Gradle в моем рабочем пространстве eclipse. Для простоты меня действительно интересуют только 2 из них, давайте просто используем для этого A и B.
Итак, проблема, с которой я сталкиваюсь, заключается в том, что проект A имеет включенную зависимость от JBoss, которая использует javax validation-api 1.0.0.GA, а Project B имеет зависимость от javax validation-api 1.1.0.Final. Поскольку Gradle сам разрешает конфликт, сначала используя более новую библиотеку, B счастлив, когда создается Gradle. Но сам Eclipse содержит ошибки, которые сильно отвлекают при редактировании.
Правильная версия jar-файла validation-api заканчивается в пути к классу B, но проблема в том, что плагин Gradle IDE изменяет зависимость проекта (': A') на ссылку проекта, и Eclipse, кажется, дает ссылке проекта приоритет над внешний кувшин. Так что старая банка предпочтительнее по расширению.
Я попытался добавить { exclude module: 'validation-api' }
в build.gradle B для зависимости от A, которая работает в соответствии с выводом «зависимостей gradle», однако, поскольку Eclipse доходит до того, что делает его ссылкой на проект, это не будет исключать банку и проблему останки.
Также на этот вопрос я попытался добавить { transitive = false }
и то же самое бывает. Я не думаю, что даже хак, представленный там, сработает для меня, поскольку .classpath содержит единственную ссылку на контейнер Gradle, поэтому удалять нечего.
Мне удалось обойти это, явно включив ссылку на правильную версию jar из моего кеша Gradle, а затем переместив ее над контейнером Gradle Classpath Container, чтобы eclipse сначала увидел эту версию.
Мой вопрос: есть ли лучший/более общий способ сделать это? Предпочтительно тот, который я могу зафиксировать в системе управления версиями, не нарушая сборки других людей и не требуя от них вручную изменять пути или свойства где-либо? Есть еще один проект с похожей проблемой, поэтому кое-что, что я могу исправить в файле build.gradle, было бы здорово.
В худшем случае, я мог бы, вероятно, переключиться на IntelliJ, если он будет вести себя лучше, чем интеграция Eclipse-Gradle?