Gradle и Maven имеют много общего, например, получение координатMaven中采用groupId,Gradle中采用group
Для настройки и управления зависимостями, но я должен сказать, что Gradle действительно более мощный, чем Maven.В целом, Gradle использует преимущества как Maven, так и Ant.Следующее официальное руководство поможет вам начать работу с Gradle.
Начало работы с Gradle (перевод с официального сайта Gradle)
Таким образом, это может быть знакомо.Я пытаюсь объяснить разницу между Gradle и Maven, потому что многие люди в основном переходят с Maven на Gradle, или они узнали о Maven раньше, и редактор использовал его раньше.Maven, теперь используя Грейдл.
1. В ГрейдлеProject
1,Project
что это?
Прежде всего, мы должны понимать, что Maven и Gradle являются инструментами управления проектами, поэтому очевидно,项目
являются их основными компонентами или, альтернативно,项目
сказать工程
, по сути то же самое. В Gradle проект — этоProject
, это может быть абстрактно, если я скажу вамProject
Это интерфейс к исходному коду Gradle, и мы можем программно обрабатывать все функции Gradle (например, управление зависимостями), как вы понимаете.
2. Как мы используемProject
?
Очевидный вопрос: нужно ли нам программировать для работы с Gradle? Ответ — нет, если вы прочитали вводное руководство выше, вы должны знать, что существует проект Gradle под названиемbuild.gradle
Файл, да, этот файл является конфигурационным файлом проекта Gradle, и он один к одному, проект Gradle имеет один и только одинbuild.gradle
конфигурационный файл.
Это то же самое, что и Maven, каждому проекту соответствует одинpom.xml
документ
3. На чем основан Gradlebuild.gradle
Файл конфигурации управляет жизненным циклом нашего проекта, т.е. что это такое?
На этапе инициализации сборки Gradlebuild.gradle
Общий процесс сборки проекта выглядит следующим образом:
- 1. Создайте
Settings
Например, если проект Gradle подsettings.gradle
файл существует, файл будет проанализирован вSettings
пример - 2. Согласно
settings.gradle
файл для настройки проекта - 3. Используйте
Settings
создание экземпляраProject
структура экземпляра - 4. Наконец, оцените каждый проект, выполнив файл build.gradle для проекта (если он существует).
4.build.gradle
Как настраиваются файлы
Вы, вероятно, задаетесь вопросом, как я справляюсь сbuild.gradle
Для настройки, прежде всего, вы уже знаете, что проект соответствуетbuild.gradle
файл, то естьbuild.gradle
файл соответствуетProject
например, тогдаProject
У экземпляров есть свойства, которые вы можете использовать.
существуетbuild.gradle
используется в файлеDSL
Чтобы настроить, вот что вы можете сделать вbuild.gradle
Содержимое настроено в файле:
-
Task
Task
— своего рода задача, задача — базовый компонент в Gradle,Task
Концепция также полученаAnt
вдохновлен -
Dependencies
управление зависимостями
-
Plugins
плагины, как в Maven
pom.xml
Так же, как добавление плагинов в файл, Gradle также может добавлять плагины.Обычные плагины включают в себя:java
,eclipse
, мы можем использоватьapply plugin: 'java'
Загрузить плагин -
Properties
конфигурация свойства
-
Methods
Настройте метод, Нани, файл конфигурации может настроить метод, вы шутите! Да, это все
DSL
очарование,DSL
встроенная поддержкаGroovy
Этот язык сценариев, таким образом, мы можемbuild.gradle
Запишите соответствующее соответствие в файлgroovy
синтаксический код, то есть, другими словами,build.gradle
Файл вышел за рамки файла конфигурации и больше похож на файл сценария, который является более мощным, чем файл конфигурации. -
Script Blocks
Блоки сценариев — это мощная функция, специфичная для Gradle. На самом деле вышеизложенное
build.gradle
Файл эквивалентен файлу сценария, поэтому появление блоков сценария неудивительно. Обычно используются следующие блоки сценариев:-
allprojects
Общая конфигурация для всех проектов (включая подпроекты) в многопроектном проекте
-
ant
поддержка муравья
-
artifacts
Поддержка создания артефактов, таких как создание пакета jar.
-
buildscript
воплощать в жизнь
gradle build
Конфигурация, связанная с командами, в основном настройка выходного каталога сборки, ссылочного хранилища и другой информации. -
configurations
Обеспечивает поддержку управления зависимостями
-
dependencies
Объявление зависимостей и конфигурация
-
repositories
конфигурация склада
-
subprojects
Общая конфигурация для всех подпроектов в мультипроекте
-
Во-вторых, в GradleProperties
1. Свойства в Gradle
Градл в соответствии сProject
Экземпляр выполняет файл сборки проекта для настройки проекта. Любое свойство или метод, используемый вашим сценарием, делегируется связанномуProject
объект. Что это обозначает? Это означает, что вы можете использовать его непосредственно в скрипте.Project
Любые методы и свойства на интерфейсе.
Например:
defaultTasks('some-task') // Delegates to Project.defaultTasks()
reportsDir = file('reports') // Delegates to Project.file() and the Java Plugin
Вышеупомянутое настраивает метод и свойство в скрипте, оба из которых будут применяться кProject
экземпляр вверх.
Конечно, вы также можете использоватьproject
атрибут для представленияProject
, даже используяproject
прямо кProject
Вызываются соответствующие методы свойств экземпляра, что в некоторых случаях может сделать сценарий более понятным. Например, вы можете использоватьproject.name
вместоname
для доступа к имени проекта.
Одинproject
Будет искать связанные свойства из 5 областей, к которым вы можете получить доступ по имени в файле сборки или позвонив в проектProject.property(java.lang.String)
Эти свойства метода пяти областей следующие:
-
1,
Project
сам.Эта сфера включает
Project
Реализует любое свойство, объявленное классомsetter
иgetter
метод. Например, мы можем пройтиProject.getRootProject()
можно использовать какrootProject
стоимость имущества. согласно соответствующемуgetter
илиsetter
Существование методов, свойств этой области видимости доступны для чтения или записи. -
2,
project
изextra
АтрибутыКаждый проект поддерживает
extra
Карта свойств, которая может содержать произвольные пары имя->значение. После определения свойства этой области также доступны для чтения и записи. -
3. Добавьте плагин в расширенные свойства проекта
Каждое расширение доступно как свойство только для чтения с тем же именем, что и расширение.
-
4. Конвенционные свойства, добавленные в проект плагином
Плагины доступны через проект
Convention
Объекты добавляют в проект свойства и методы. Свойства области могут быть доступны для чтения или записи, в зависимости от объекта контракта. -
5.
task
как атрибутДоступ к задаче можно получить, используя ее имя в качестве имени свойства. Свойства этой области доступны только для чтения. Например, названный
compile
задание можно использовать какcompile
доступ к собственности.
extra
Свойства и условные свойства наследуются от родительского проекта рекурсивно в корневой проект. Свойства этой области доступны только для чтения.
При чтении свойства элемент ищет указанные выше диапазоны по порядку и возвращает значение из первого диапазона, в котором найдено свойство. Если свойство не найдено, Gradle сообщит об ошибке.
При установке свойства проект ищет указанные выше области по порядку и устанавливает свойство в первой области, в которой оно найдено.
2,Extra
Атрибуты
всеExtra
атрибут должен пройтиext
пространство имен для определения. Как только вы определитеExtra
свойства, которые доступны непосредственно в объекте-владельце (в приведенном ниже примере проект, задача и подпроект соответственно) и могут быть прочитаны и обновлены.Extra
Атрибуты доступны только через пространства именext
Его можно использовать после объявления и инициализации.
Например, в следующем списке перечислены три разные областиExtra
Атрибуты:
// Project本身
project.ext.prop1 = "foo"
// 任务
task doStuff {
ext.prop2 = "bar"
}
// 子项目下
subprojects { ext.${prop3} = false }
читатьExtra
свойства проходят черезext
или через принадлежащий объект.
ext.isSnapshot = version.endsWith("-SNAPSHOT")
if (isSnapshot) {
// do snapshot stuff
}
Другие свойства могут быть найденыздесь
Три, конфигурация Gradle простой многопроектный проект
ПроектSpring boot
Инженерия, мы можем пройтиhttp://start.spring.io/
Загрузка конфигурации, основной проект содержит три подпроекта, а именноmyapp-controller
,myapp-service
,myapp-dao
Схема структуры проекта выглядит следующим образом:
в корневом каталогеsettings.gradle
rootProject.name = 'myapp'
include 'myapp-controller'
include 'myapp-service'
include 'myapp-dao'
build.gradle
// 构建脚本
buildscript {
ext {
springBootVersion = '2.0.2.RELEASE'
}
repositories {
mavenCentral()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
// 所有项目共有的配置
allprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
}
по каждому подпроектуbuide.gradle
description = 'myapp-controller'
dependencies {
// 该子工程包含另外一个子工程
compile project(':myapp-dao')
}