Project

General

Profile

Gradle » History » Version 2

Alexey Demakov, 11/05/2015 05:18 PM

1 1 Alexey Demakov
h1. Gradle-based build system.
2
3
h2. История
4
5
Предыдущая версия системы сборки использовала Ant для управления сборкой и Ivy для управления зависимостями.
6
Система сборки представляла собой библиотечный Ant файл, который подключался к проекту и предоставлял 
7
базовую функциональность по сборке Java проектов и управлению выпуском релизов.
8
Gradle реализует и расширяет эту функциональность, поэтому принято решение использовать этот инструмент для сборки проектов.
9
10
h2. Ресурсы
11
12
http://gradle.org
13
14
h2. Подключение Gradle к проекту
15
16
h3. 1. Установить gradle, определить переменную окружения GRADLE_HOME.
17
18
h3. 2. В каталоге проекта выполнить команду создания конфигурационных файлов для Java проекта:
19
20
@> gradle init --type java-library@
21
22
Другие доступные типы проектов: https://docs.gradle.org/current/userguide/build_init_plugin.html
23
24
Также будет создана обертка-запускач gradlew/gradlew.bat, которая избавляет от необходимости вручную
25
устанавливать gradle для сборки проекта - разработчику достаточно просто выкачать рабочую копию проекта из репозитория,
26
gradle будет установлен автоматически.
27
28
Дополнительная информация: 
29
https://docs.gradle.org/current/userguide/gradle_wrapper.html
30
https://docs.gradle.org/current/userguide/wrapper_plugin.html
31
32
h3. 3. Привести структуру папок в соответствие с соглашениями gradle:
33
34
src/main/java - код проекта
35
src/main/resources - ресурсы проекта
36
src/test/java - код тестов
37
38
Дополнительная информация:
39
https://docs.gradle.org/current/userguide/java_plugin.html#N12323
40
41
h3. 4. Указать зависимости проекта в build.gradle:
42
43
compile - зависимость, необходимая для сборки проекта
44
testCompile - зависимость, необходимая для сборки тестов
45
группа:имя:версия - формат зависимости
46
47 2 Alexey Demakov
<pre>
48 1 Alexey Demakov
dependencies {
49
    // The production code uses the SLF4J logging API at compile time
50
    compile ''org.slf4j:slf4j-api:1.7.12''
51
52
    // Declare the dependency for your favourite test framework you want to use in your tests.
53
    // TestNG is also supported by the Gradle Test task. Just change the
54
    // testCompile dependency to testCompile ''org.testng:testng:6.8.1'' and add
55
    // ''test.useTestNG()'' to your build script.
56
    testCompile ''junit:junit:4.12''
57
}
58 2 Alexey Demakov
</pre>
59 1 Alexey Demakov
60
Дополнительная информация: https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management
61
62
h3. 5. Указать репозитории, в которых ищутся зависимости в build.gradle:
63
64 2 Alexey Demakov
<pre>
65 1 Alexey Demakov
repositories {
66
    // репозиторий ИСП РАН, подключается, если есть зависимости от наших проектов
67
    ivy {
68
      url = ''http://forge.ispras.ru/repo''
69
      layout ''pattern'', {
70
        artifact ''[organization]/[ext]s/[artifact]-[revision](.[ext])''
71
      }
72
    }
73
    // Use ''jcenter'' for resolving your dependencies.
74
    // You can declare any Maven/Ivy/file repository here.
75
    jcenter()
76
}
77
78 2 Alexey Demakov
</pre>
79 1 Alexey Demakov
Дополнительная информация: https://docs.gradle.org/current/userguide/dependency_management.html#sec:repositories