2015-01-12 2 views
0

Я создаю файлы проекта Eclipse, как показано на рисунке:Установка EclipseProject.referencedProjects с использованием зависимостей в Gradle

eclipse { 
    project { 
     natures 'org.eclipse.jdt.core.javanature' 
     buildCommand 'org.eclipse.jdt.core.javabuilder' 
    } 
    classpath { 
     downloadSources true 
     downloadJavadoc true 
    } 
} 

У меня есть Gradle построить мульти-проекта, где проекты ссылаются друг на друга и 3-й партии LIBS. Для projectA, его зависимостей:

dependencies { 
    compile project(':projectB') 
    compile project(':projectC') 

    compile "com.google.guava:guava:${VER_GUAVA}" 
} 

Это прекрасно работает, за исключением того, что сгенерированные проекты не ссылаются друг на друга. Он строит просто отлично, но это означает, что если я реорганизую что-то в projectB, ссылки в projectA не будут реорганизованы вместе с ним. Исправление, по-видимому, должно установить переменную referencedProjects конфигурации eclipse, но я бы хотел, чтобы это было автоматически заполнено на основе зависимостей. Что-то вроде:

eclipse { 
    project { 
     referencedProjects dependencies.grep(dep is project) 
     ... 

У кого-нибудь есть подсказки?

+0

Если я создаю новый проект Gradle в Eclipse с использованием шаблона «flat mulyiproject», тогда создаются проекты продуктов и my-lib, где продукт зависит от my-lib через зависимость компиляции Gradle. Тем не менее, когда я переименую CoolLib # niceMethod() в CoolLib # bestMethod(), он правильно завершает рефакторинг. Интересно, каковы различия между вашей установкой и настройкой из шаблона ... – aboyko

+0

Вы имеете в виду шаблон в 7.3.3 здесь: http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html? –

ответ

0

Это, как я в конечном итоге ее определения:

// add all project dependencies as referencedProjects 
tasks.cleanEclipse.doLast { 
    project.configurations.stream() 
    .flatMap({config -> config.dependencies.stream()})  // get all deps 
    .filter({dep -> dep instanceof ProjectDependency})  // that are Projects 
    .forEach({dep -> eclipse.project.referencedProjects.add(dep.name)}) // and add to referencedProjects 
} 
// always create "fresh" projects 
tasks.eclipse.dependsOn(cleanEclipse) 

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

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