Подтвердить что ты не робот

Gradle функция родительского помпа

В моей работе мы используем Maven. Я собираюсь попробовать gradle в первый раз. Мы используем общий родительский pom для всего проекта, который имеет настройки для обычно используемых плагинов maven и нескольких зависимостей comon. Есть ли аналогичный вариант в gradle?

Мой второй вопрос касается управления выпуском. Мы используем maven release плагин, который работает очень хорошо для нас. Есть ли что-то подобное в gradle?

4b9b3361

Ответ 1

Чтобы делиться материалами внутри нескольких проектов одной и той же сборки, используйте allprojects { ... }, subprojects { ... } и т.д. Кроме того, дополнительные свойства (ext.foo = ...), объявленные в родительском проекте, видны в подпроектах. Обычная идиома - иметь что-то вроде ext.libs = [junit: "junit:junit:4.11", spring: "org.springframework:spring-core:3.1.0.RELEASE", ...] в сборке верхнего уровня script. Субпроекты могут затем выборочно включать зависимости по их короткому имени. Вы должны найти дополнительную информацию об этом в Gradle Форумы.

Чтобы делиться логикой между сборками, вы можете написать плагин script (foo.gradle), разместить его на веб-сервере и включить его в сборки с помощью apply from: "http://..." или написать двоичный плагин (класс реализуя org.gradle.api.Plugin), публикуйте его как Jar в репозитории и включите его в сборки с помощью apply plugin: ... и buildscript {}. Подробнее см. В Gradle Руководство пользователя и множество образцов в полном дистрибутиве Gradle.

Ограничение тока script (но не двоичных) плагинов заключается в том, что они не кэшируются. Поэтому сборка будет успешной только в том случае, если она сможет подключиться к веб-серверу, обслуживающему плагин.

Что касается вашего второго вопроса (который должен был быть отдельным вопросом), есть несколько доступных плагинов для сторонних разработчиков, например https://github.com/townsfolk/gradle-release.

Ответ 2

Плагин io.spring.dependency-management позволяет использовать Maven для управления зависимостями сборки:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE"
  }
}

apply plugin: "io.spring.dependency-management"

Затем вы можете использовать его для импорта ботинка Maven:

dependencyManagement {
  imports {
    mavenBom 'io.spring.platform:platform-bom:1.1.1.RELEASE'
  }
}

Теперь вы можете импортировать зависимости без указания номера версии:

dependencies {
  compile 'org.springframework:spring-core'
}

Ответ 4

Вы можете легко преобразовать содержимое родительского pom в Gradle файл инициализации. Gradle init script предоставляет ту же функциональность, что и Maven super/parent pom. Основное отличие состоит в том, что вы можете вызвать init script

Время выполнения  Как и многие из них Это дает нам гибкость для изменения init   script во время выполнения, но сомневаюсь в том, что вы не отслеживаете изменения.

Вам нужно взять репозиторий, управление распределением, профилирование и другие проверки, такие как findbugs, checkstyle и т.д. в init script.

Подробности огромны, здесь вы можете найти полную информацию. http://www.scmtechblog.net/2015/12/how-to-migrate-parent-pom-from-maven-to.html

Я объяснил о выпуске плагина Gradle, который похож на плагин релиза maven.

Ответ 5

чтобы достичь вашей цели, вы можете применить концепцию "сборка мультипроектов", описанную в руководстве пользователя gradel здесь

В принципе вы можете создать зонтичный проект, который определяет набор общих конфигураций, создавая файл gradle.build и файл gradle.settings. Файл сборки содержит свойства, зависимости и плагины для всех проектов, settings.gradle определяет, какие подпроекты наследуют эти конфигурации.

Кроме того, чтобы иметь представление о экосистеме плагинов gradle, вы можете проверить этот источник.

Ответ 7

Я думаю, что лучший способ сделать что-то вроде maven parent pom - использовать gradle "apply from".
Что-то вроде этого:

allprojects { // or: subprojects { ... }
    apply from: "gradle/script/common.gradle"
}

Ссылка и быть связанным путем или URL-адресом. Надеюсь, что это поможет.

Справка:
Импортировать gradle script из корня в подпроекты
Супер POM, Родительский тип управления иерархией POM в Gradle