Задача Gradle eclipse не добавляет надлежащей природы градиента

У меня есть следующая структура проекта:

  • root-gradle (build.gradle)
    • project-group1 (no build file)
      • project1 (build.gradle)
      • проект2 (сборка.градле)
      • ...
    • project-group2 (no build file)
      • ...

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

gradle cleanEclipse eclipse

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

sourceCompatibility = 1.6

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

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

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

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

Итак, похоже, у меня есть 2 проблемы с настройкой Gradle.

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

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

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

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


person ATrubka    schedule 01.09.2015    source источник
comment
Я обновляю только из Eclipse, но настраиваю с помощью плагина gradle eclipse. Я сталкивался с проблемами, когда afterEvaluate разрешал гонки, поэтому вы можете попробовать это, чтобы увидеть, нужно ли вам отложить изменение до конца этапа настройки.   -  person Ben Manes    schedule 02.09.2015
comment
Я с @BenManes в этом вопросе. Возможно, ваш блок allprojects запускается до того, как будет собран список подпроектов, что приводит к поведению, которое вы видите. Вы пробовали использовать afterEvaluate?   -  person RaGe    schedule 09.12.2015


Ответы (5)


Используя Buildship: подключаемые модули Eclipse для Gradle, мне пришлось использовать естественную строку ' org.eclipse.buildship.core.gradleprojectnature '

Например:

allprojects {
    eclipse.project {
        natures 'org.eclipse.buildship.core.gradleprojectnature'
    }
}
person Alex Q    schedule 26.02.2016

Установите плагин Gradle для Eclipse

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

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

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

  • Используйте меню Eclispe: Файл -> Создать -> Другое...
  • Выберите мастер: Gradle -> Проект Gradle.
  • Введите название проекта
  • Нажмите кнопку Готово.

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

person Verhagen    schedule 19.10.2015
comment
Тогда вам не следует не использовать команды gradle cleanEclipse eclipse. Поскольку они генерируют те же/подобные файлы, что и плагин Gradle для Eclipse. Также удалите часть eclipse.project { ... } из файла сборки Gradle. Поскольку он не используется плагином Gradle для Eclipse. И только может сбить с толку других разработчиков проекта. - person Verhagen; 20.10.2015
comment
Я понимаю, что затмение cleanEclipse - это крайняя мера. Однако в некоторых случаях нет другой команды, которая помогла бы изменить версию библиотеки. Раздел eclipse.project действительно используется, но не применяется к подпроектам. Вы можете вставить его в каждый файл градиента, тогда природа будет добавлена, как и ожидалось. - person ATrubka; 20.10.2015
comment
Когда вы придерживаетесь gradle cleanEclipse eclipse, неудивительно, что Eclipse выходит из приемника с новыми сгенерированными файлами, такими как .project и .classapth. Если вам нужен этот способ работы, я бы посоветовал закрыть Eclipse или, по крайней мере, закрыть в Eclipse все связанные проекты. Затем запустите в командной строке файл gradle cleanEclipse eclipse. А затем снова откройте Eclipse (или откройте ранее закрытые проекты). - person Verhagen; 20.10.2015
comment
Я согласен с @Verhagen, задачи затмения Gradle не самые лучшие и действительно борются с самим Eclipse. Еще до Buildship, используя плагины STS Gradle IDE, они лучше справились с настройкой проекта Eclipse, чем сам Gradle. Имеет смысл, не так ли: Gradle — это инструмент управления сборкой и зависимостями, лучше оставить IDE для инструментов IDE. - person E-Riz; 03.12.2015
comment
К сожалению, нездоровая одержимость инструментами сборки и управления зависимостями вынуждает людей использовать их для всего, даже если они для этого не подходят. - person ATrubka; 07.12.2015

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

allprojects {
    afterEvaluate {
        eclipse.project {
            natures 'org.springsource.ide.eclipse.gradle.core.nature'
        }
    }
}
person RaGe    schedule 08.12.2015
comment
Хотя природа добавлена, Eclipse по-прежнему не распознает проекты как проекты Gradle. В итоге мне приходится отключать, а затем снова включать природу Gradle, а затем включать управление зависимостями для их сборки. - person nickb; 09.12.2015
comment
Хм, я думаю, eclipse делает некоторое распознавание только во время добавления проекта, и нет (в настоящее время) простого способа заставить eclipse переделать это из инструмента сборки. - person RaGe; 10.12.2015

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

  • Установите Gradle с веб-сайта Gradle.
  • Перейдите к настройкам eclipse, установите домашний путь в gradle EnIDE, например «C:\gradle-2.3»
    или любой другой каталог, который вы установили.
  • Также не забудьте добавить путь к переменной системной среды.
person user1973596    schedule 07.12.2015
comment
Это заставит версии Gradle быть одинаковыми для всех проектов и ограничит возможность использования IDE значений по умолчанию, определенных оболочкой Gradle, не так ли? - person nickb; 07.12.2015
comment
Так или иначе, он был настроен. Похоже, проблема в том, что плагин глючит. - person ATrubka; 07.12.2015

введите здесь описание изображения

в настройках градиента >>

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

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

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

}

здесь Secugen и Morpho - мои 2 подпроекта

person Mahfuz Ahmed    schedule 09.12.2015
comment
Как сборка Morpho Gradle находит своего родителя? Из того, что я знаю, он ищет только в главном каталоге родного брата или родительских каталогах. Что происходит, когда вы запускаете только сборку Morpho (не сборку root)? - person ATrubka; 10.12.2015