2016-04-14 2 views
1

Я использую Eclipse Mars.2 (4.5.2) с Buildship 1.0.14. Версия Gradle - 2.12.Зависимости проектных проектов в Eclipse с построением

Я импортирую проект градиента в Затмение. Нет .project или .classpath файлы существуют до импорта. Все модули импортированы успешно. Но почти каждый проект с java-кодом пропустил зависимости и показал красный «X».

Если вы открываете java-файл с ошибкой, вы можете видеть, что Eclipse не может разрешить импорт. Но если вы откроете импортированный класс по имени, он может найти его в зависимости от другого модуля.

Gradle -> Обновить проект не помогает.

необходимая зависимость, объявленная в корне build.gradle таким образом:

ext.library = [ 
    swagger: [ 
      [ group: "io.swagger", name: "swagger-annotations", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-core", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-jaxrs", version: "1.5.3" ] 
    ] 
] 

и в модулях Заявляет это следующим образом:

dependencies { 
    providedCompile library.swagger 
} 

При выполнении gradle build из командной строки или даже из Eclipse, сборка выполнена успешно.

Небольшой пример проекта для воспроизведения этой проблемы можно найти на github (спасибо RaGe за участие в этом).

Не могли бы вы помочь мне решить эту проблему с помощью Eclipse?

+0

Какая версия градиента вы используете? – RaGe

+0

Используете ли вы плагин gradle war? – RaGe

+0

Gradle версия 2.12. Да, используется военный плагин. – dds

ответ

1

Ответы со ссылкой на образец кода, который вы предоставили here.

Вы не используете военный плагин, но вместо этого объявляете свою собственную конфигурацию с именем providedCompile. Gradle и по расширению, buildship/eclipse не знают, что означает providedCompile. Таким образом, зависимости, которые вы указали в providedCompile, не используются в качестве времени выполнения компиляции.

Отсюда следует, что ваши операторы импорта стали ошибки компиляции времени - как в затмении, и из Gradle командной строки с gradle build

Вы можете добавить providedCompile к классам компиляции, выполнив:

sourceSets.main.compileClasspath += [configurations.providedCompile] 

Если добавить затмение плагин для вашего проекта, вы можете изменить затмение пути к классу компиляции с:

eclipse { 
    classpath { 
    plusConfigurations += [configurations.providedCompile] 
    } 
} 
+0

добавление плагина и конфигурации eclipse разрешило его, спасибо! – dds

+0

отлично! Вы также должны подумать над ответом на ответ. – RaGe

0

Ребят на официальный трекер ошибок сказал мне, что с градиентом 2.12 теперь можно использовать область compileOnly, которая по умолчанию также подключается к Eclipse.