2015-09-01 2 views
11

У меня есть следующая структура проекта:Gradle затмение задача не добавляет надлежащему Gradle Природы

  • корень Gradle (build.gradle)
    • проект-group1 (не файл сборки)
      • project1 (build.gradle)
      • project2 (build.gradle)
      • ...
    • проект-group2 (не файл сборки)
      • ...

Так получилось, что я должен воссоздать проекты Eclipse, часто. Я запускаю команду:

gradle cleanEclipse eclipse 

После выполнения ряда задач «Затмение» перестает работать как ожидалось. А именно, он не добавляет Gradle природу проектов больше и не признает

sourceCompatibility = 1.6 

больше пытается построить все с 1.8 версии Java.

Я добавил следующее в корневой build.gradle:

allprojects { 
    sourceCompatibility = 1.6 
    eclipse.project { 
     natures 'org.springsource.ide.eclipse.gradle.core.nature' 
    } 
    // more stuff here ... 
} 

Это помогло с корнем проекта, но не имел никакого влияния на какой-либо другой проект. Я добавил то же самое к подпроектам с таким же неудовлетворительным результатом. Я должен сказать, что даже после того, как природа была добавлена ​​в корневой проект, а опции плагина Gradle стали доступными для корня снова, я до сих пор не вижу значок «G».

Похоже, у меня есть 2 проблемы с настройкой градиента.

  1. Исчезновение природы градиента. После нескольких запусков Eclipse перестает распознавать проекты градиентов. Я бы даже не столкнулся с второй проблемой, если бы это сработало правильно.

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

  3. Отсутствует значок «G» для проекта с восстановленной природой Грейдл.

Любая помощь была бы принята с благодарностью!

+1

Я только обновляюсь от Eclipse, но настраиваю с помощью плагина eclipse. Я столкнулся с проблемами, когда 'afterEvaluate' разрешал расы, чтобы вы могли попробовать это, чтобы проверить, нужно ли задерживать изменение до конца фазы конфигурации. –

+1

Я с @BenManes на этом. Возможно, что ваш блок allprojects выполняется до того, как будет собран список подпроектов, что приведет к поведению, которое вы видите. Вы пытались использовать afterEvaluate? – RaGe

ответ

4

Установка Gradle plug-in for Eclipse

Затем с помощью меню Eclipse: File -> Import ... импортировать проект Gradle. Он добавит природу Природы. И 2 дополнительных представления Eclipse, один для быстрого запуска задач Gradle.Один для вывода Gradle этих выполненных задач.

СОВЕТ: Прежде чем импортировать существующий проект Gradle, создать New Gradle проект, чтобы увидеть, если Gradle плагин работает, как ожидалось.

Новый Gradle Проект

  • Используйте меню Eclispe: File -> New -> Other ...
  • Выберите мастера: Gradle -> Gradle Project
  • Enter название проекта
  • Нажать кнопку Отделка

Это должно создать минимальный проект Gradle.

+0

Вот что у меня есть. – ATrubka

+1

Тогда вам не следует использовать команды 'gradle cleanEclipse eclipse'. По мере их создания те же/похожие файлы, что и плагин _Gradle для Eclipse_. Также удалите «затмение».project {...} 'part fomr файл сборки Gradle. Поскольку он не используется _Gradle для Eclipse_-плагина. И только может запутать других разработчиков проекта. – Verhagen

+0

Я понимаю, что затмение cleanEclipse - последнее средство. В некоторых случаях, хотя нет другой команды, которая помогает с изменением версии библиотеки. Раздел eclipse.project фактически используется, но он не применяется к подпроектам. Вы можете вставить его в каждый файл градиента, затем природа добавляется, как и ожидалось. – ATrubka

1

Я думаю, вы должны установить градиент в свою системную среду. Шаги -

  • Установить Gradle с сайта градиента.
  • Перейти к настройкам затмения Начальный путь в градиенте ENIDE like "C: \ gradle-2.3"
    или любой другой каталог, который вы установили.
  • Также не забудьте добавить путь к переменной вашей системной среды.
+0

Это приведет к тому, что версии Gradle будут одинаковыми для всех проектов и ограничат возможность позволить IDE использовать значения по умолчанию, определенные оболочкой Gradle, нет? – nickb

+0

В любом случае, он настроен. Похоже, проблема в том, что плагин глючный. – ATrubka

3

Если есть условие гонки фаз оценки, вы можете устранить его, используя квалификатор afterEvaluate. Я хотел бы попробовать:

allprojects { 
    afterEvaluate { 
     eclipse.project { 
      natures 'org.springsource.ide.eclipse.gradle.core.nature' 
     } 
    } 
} 
+0

Пока природа добавлена, Eclipse по-прежнему не распознает проекты как проекты Gradle. В конечном итоге мне нужно отключить, а затем снова включить природу Gradle, а затем включить управление зависимостями для их создания. – nickb

+0

Хм, я думаю, что затмение делает некоторое признание только во время добавления проекта, и нет (в настоящее время) простого способа заставить затмение повторно сделать это из инструмента построения. – RaGe

0

enter image description here

в настройках Gradle >>

include 'Device', 'Secugen', 'Morpho', 'NIDVSADesktop' 

здесь NIDVSADesktop мой корень проекта. в корневом проекте Gradle

dependencies { 
    compile project(':Secugen') 
    compile project(':Morpho') 

} 

здесь SecuGen и Morpho мои 2 суб проекты

+0

Каким образом Morpho gradle build находит своего родителя? Из того, что я знаю, он ищет только в «master» sibling каталоге или родительских каталогах. Что происходит, когда вы выполняете только сборку Morpho (не root-сборка)? – ATrubka

5

Использование Buildship: Eclipse Plug-ins for Gradle я должен был использовать природ строку «» org.eclipse.buildship.core.gradleprojectnature

Например:

allprojects { 
    eclipse.project { 
     natures 'org.eclipse.buildship.core.gradleprojectnature' 
    } 
} 
Смежные вопросы