Какая разница в применении плагина gradle

Я не понимаю блок плагинов градиентов

apply plugin: 'someplugin1'
apply plugin: 'maven'

и другой:

plugins {
   id 'org.hidetake.ssh' version '1.1.2'
}

В первом блоке У нас есть имя плагина. во втором пакете и версии. Я не понимаю, где я должен использовать первый блок и второй.

Ответ 1

Блок plugins - это новый метод применения плагинов, и они должны быть доступны в репозитории плагинов Gradle. apply подход является старшим, но более гибкий метод добавления плагина к вашей сборке.

Новый метод plugins не работает в многопроектных конфигурациях (subprojects, все allprojects), но будет работать над конфигурацией сборки для каждого дочернего проекта.

Я думаю, что по мере прогрессирования функциональности метод настройки plugins обойдет более старый подход, но на этом этапе оба могут быть и использоваться одновременно.

Ответ 2

Как уже упоминалось @cjstehno, apply plugin является унаследованным методом, которого следует избегать.

С введением плагинов DSL у пользователей должно быть мало оснований использовать устаревший метод применения плагинов. Это описано здесь, если автор сборки не может использовать DSL-модули плагинов из-за ограничений в том, как он работает в настоящий момент.

С помощью нового plugins block метода, вы можете добавить плагин и контроль, когда применять его с помощью необязательного параметра apply:

plugins {
    id «plugin id» version «plugin version» [apply «false»]
}

Вы все равно будете использовать устаревший метод в ситуациях, когда вы хотите применить уже добавленный, но не применяемый плагин в своем блоке plugins. Например, в главном проекте добавлен плагин xyz но не применяется, и его следует применять только в подпроекте subPro:

plugins {
  id "xyz" version "1.0.0" apply false
}

subprojects { subproject ->
    if (subproject.name == "subPro") {
        apply plugin: 'xyz'
    }
}

Обратите внимание, что вам больше не нужна версия. Версия требуется в блоке plugins если вы не используете один из плагинов Core Gradle, таких как java, scala ,...

Я потратил некоторое время на понимание разницы, пытаясь создать приложение Spring Boot, и поэтому я через некоторое время отвечаю на это. Следующий пример использования Spring Boot plugin помог мне много:

Что следует использовать в настоящее время:

plugins {
  id "org.springframework.boot" version "2.0.1.RELEASE"
}

Что было использовано до Gradle 2.1:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.1.RELEASE"
  }
}

apply plugin: "org.springframework.boot"