-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.gradle.kts
More file actions
87 lines (72 loc) · 3.32 KB
/
Copy pathsettings.gradle.kts
File metadata and controls
87 lines (72 loc) · 3.32 KB
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
/*
* Copyright 2022, TeamDev. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Redistribution and use in source and/or binary forms, with or without
* modification, must retain the above copyright notice and the following
* disclaimer.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import io.spine.internal.catalog.SpineVersionCatalog
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// We don't apply any plugins.
// We just put our code on a classpath of settings script.
classpath("io.spine.internal:spine-version-catalog:+")
}
}
dependencyResolutionManagement {
versionCatalogs {
/*
The code, we have put on a classpath, exposes a class `SpineVersionCatalog`,
which can execute actions upon `VersionCatalogBuilder`.
It is so because we want to preserve a possibility of overwrite.
Currently, Gradle does not provide a clear way to perform overwrite for
already created catalogs. Thus, it is a responsibility of end-users
to create catalogs. `SpineVersionCatalog` just operates upon the given builder.
In order to override a version, shipped by the catalog, one should
declare it BEFORE applying the catalog to the builder. Versions,
declared first, always win.
In contrast, to override a library, plugin or bundle, one should
declare it AFTER applying the catalog to the builder. Those items,
declared last, always win.
See the issue: https://github.com/gradle/gradle/issues/20836
*/
create("libs") {
/*
An example of how to override versions.
Two lines below declare versions of Kotlin for our build logic.
Our `SpineVersionCatalog` class also declares those versions, and
declaring them first in settings file is, actually, current way
to perform override.
Build scripts are executed by Gradle's embedded Kotlin, and
implementing build logic with different Kotlin makes little sense.
Primarily, it just gets rid of a multi-line warning block.
*/
version("kotlin", "1.5.31")
version("kotlinX-coroutines", "1.5.2")
// Fills up this catalog with our dependencies.
SpineVersionCatalog.useIn(this)
}
}
}