This repository has been archived by the owner on Feb 18, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.gradle
137 lines (116 loc) · 3.83 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
127
128
129
130
131
132
133
134
135
136
137
// Buildscript configuration
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
maven {
name = 'gradle-plugins'
url = 'https://plugins.gradle.org/m2'
}
}
dependencies {
classpath group: 'gradle.plugin.net.minecrell', name: 'licenser', version: minecrell_licenser_version
classpath group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: shadow_version
classpath group: 'org.ajoberstar', name: 'grgit', version: grgit_version
classpath group: 'gradle.plugin.net.kyori', name: 'blossom', version: blossom_version
}
}
String obtainRepositoryPath(String url) {
if(url == null) return null
if(url.startsWith("ssh://") || url.startsWith("http")) {
def uri = URI.create url
return uri.path.substring(1).replace(".git", "")
} else if(url.matches("^[a-zA-Z0-9_\\-]+@[a-zA-Z0-9_\\-]+.[a-z]+:(.+?)")) {
return url.split(":", 2)[1].replace(".git", "")
}
return null
}
def gitRepo = null
try {
gitRepo = org.ajoberstar.grgit.Grgit.open(dir: ".")
}
catch (org.eclipse.jgit.errors.RepositoryNotFoundException ignored) {}
project.ext.gitCommitId = gitRepo?.head()?.getAbbreviatedId(7) ?: "UNKNOWN"
project.ext.gitBranch = gitRepo?.branch?.current()?.name ?: "UNKNOWN"
project.ext.gitRepository = obtainRepositoryPath(gitRepo?.remote?.list()?.find { it.name == "origin" }?.url) ?: "UNKNOWN"
// Subproject configurations
allprojects {
// Project information
group = 'eu.mikroskeem'
version = properties.version
description = properties.description
url = properties.url
// Repositories
repositories {
mavenLocal()
mavenCentral()
maven {
name = 'mikroskeem-repo'
url = 'https://repo.wut.ee/repository/mikroskeem-repo'
}
maven {
name = 'destroystokyo-repo'
url = 'https://repo.destroystokyo.com/repository/maven-public'
}
maven {
name = 'spongepowered-repo'
url = 'https://repo.spongepowered.org/maven'
}
}
}
subprojects {
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'net.minecrell.licenser'
apply plugin: 'java'
// Configurations
configurations {
downloadDep
compile.extendsFrom downloadDep
}
// Java compiler options
sourceCompatibility = 1.8
targetCompatibility = 1.8
// Licenser task
license {
header = rootProject.file('etc/HEADER')
ignoreFailures = false
include "**/*.java"
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
// downloadDep configuration collector
task collectDependencies {
subprojects {
inputs.file(configurations.downloadDep)
}
outputs.file(new File(temporaryDir, 'deps.txt'))
doLast {
def outputFile = new File(temporaryDir, 'deps.txt')
def deps = [] as Set
rootProject.subprojects.each { subproject ->
subproject.configurations.downloadDep.resolvedConfiguration.resolvedArtifacts.each { dep ->
def depString = dep.id.componentIdentifier.toString()
def splitted = depString.split(':')
if(splitted.length > 3) {
depString = java.util.Arrays.copyOf(splitted, 3).join(":")
}
deps += depString
}
}
outputFile.createNewFile()
outputFile.withWriter { BufferedWriter writer ->
deps.each {
writer.writeLine it
}
}
}
}
}
// Wrapper task
wrapper {
gradleVersion = gradle_version
}
defaultTasks 'build'