-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
126 lines (109 loc) · 6.32 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
* Немного базовой конфигурации build.gradle для кастомных настроек проекта
*
* В базовом формате проект состоит из плагинов которые включают в себя список сущностей,
* которые называются конфигурации.
* Конфигурации содержат такую информацию как: корень проекта, списки задач (tasks) и т.п.
* Например плагин 'java' включает в себя разметку директорий на main и test, возможность компиляции,
* большую часть базовых задач таких как build, clean, test, jar и т.п.
*/
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.6'
id 'io.spring.dependency-management' version '1.1.0'
}
/**
* Здесь находится заголовок проекта и совместимая версия java, в данном случае 17
*/
group = 'sezergemtsov'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
/**
* Ниже находятся настройки конфигураций, но почти все включены в плагины и настройки не требуют
*/
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
/**
* Ниже приведена настройка директории, которая не включена в стандартный плагин
* Для примера мы подготовим директорию с тестом который будет запускаться отдельно от задачи test
* В данном примере srcDir показан для примера, но если название директории сходится с сущностью
* дополнительно указывать путь не требуется
*/
sourceSets {
my_folder {
java {
srcDirs 'src/my_folder/java'
}
}
}
/**
* Ниже находятся ссылка на репозиторий зависимостей
*/
repositories {
mavenCentral()
}
/**
* Ниже блок который отвечает за зависимости в проекте
* Здесь стоит обратить внимание на первое имя в каждой строке: это наименование
* ранее упомянутых сущностей конфигураций. Например implementation отвечает за зависимости
* в основных разделах, testImplementations за зависимости в разделе test, и конечно созданный
* нами раздел my_folder автоматически получает список конфигураций которые можно настраивать.
* В данном случае мы подключили зависимости JUnit к директории с нашим отдельным тестом,
* а также подключили testEngine для выполнения теста в runtime
*/
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.liquibase:liquibase-core'
implementation 'org.springframework.kafka:spring-kafka'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
my_folderImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.6.0'
my_folderRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}
/**
* Короткое поле, которое присутствует в базовом проекте отвечает за подключения JUnit5
* Для тестов написанных с использованием зависимостей JUnit4 и ниже не требуется
*/
tasks.named('test') {
useJUnitPlatform()
}
/**
* Как в конструкции выше, данная запись модифицирует задачи (task)
* Так как gradle использует Groovy, блоки описываются с сущностями и методами, что дает
* возможность гибкой настройки. Из примеров мы можем ссылаться на другие задачи, обращаться
* к командной строке или терминалу и передавать команды, создавать конструкции в виде
* циклов и условных выражений, вытаскивать информацию из сущностей, таких как конфигурации.
* Задача ниже запускает стандартную задачу, но меняет среду
*/
tasks.register('second_properties_run') {
dependsOn('bootRun')
group = 'application'
bootRun.environment('spring.profiles.active', 'test')
}
/**
* Следующая задача написана для запуска отдельного теста. Мы также подключаем JUnit5,
* размещаем задачу рядом с другими задачами на тесты в разделе verification, определяем нашу директорию
* как источник тестов
* Дополнительно стоит упомянуть о фильтре, так как в рамках базовой директории
* можно влючать и исключать тестовые классы по заколовкам или именам директорий
*/
tasks.register('my_folder_test', Test) {
useJUnitPlatform()
group = "verification"
testClassesDirs = sourceSets.named('my_folder').getOrNull().output.classesDirs
classpath = sourceSets.my_folder.runtimeClasspath
filter{
excludeTestsMatching '*Not*'
}
}