generated from MinRi2/MindustryJavaModTemplate
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.gradle
More file actions
131 lines (103 loc) · 3.92 KB
/
build.gradle
File metadata and controls
131 lines (103 loc) · 3.92 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
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
apply plugin: "java"
version '1.0'
sourceSets.main.java.srcDirs = ["src"]
repositories{
mavenCentral()
//Downloads the server-release JAR file from Mindustry releases; does not use any real repository. Surprisingly, this is the most reliable option.
ivy{
url 'https://github.com/'
patternLayout{artifact '/[organisation]/[module]/releases/download/[revision]/dependencies.jar'}
metadataSources{ artifact() }
}
//"Latest" option to depend on BE builds.
ivy{
url 'https://github.com/'
patternLayout{artifact '/[organisation]/[module]/releases/download/master/[revision].jar'}
metadataSources{ artifact() }
}
//Do the same with jabel
ivy{
url 'https://github.com/'
patternLayout{artifact '/[organisation]/[module]/releases/download/[revision]/jabel.jar'}
metadataSources{ artifact() }
}
}
java{
targetCompatibility = 8
sourceCompatibility = JavaVersion.VERSION_17
}
ext{
mindustryVersion = 'v156' //the build number that this mod is made for
jabelVersion = "93fde537c7"
//windows sucks
isWindows = System.getProperty("os.name").toLowerCase().contains("windows")
sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
modDir = "${System.getenv("APPDATA")}\\Mindustry\\mods"
}
//java 8 backwards compatibility flag
allprojects{
tasks.withType(JavaCompile){
options.compilerArgs.addAll(['--release', '8'])
}
}
dependencies{
def useLatest = false //set to "true" to always depend on the newest version of mindustry
compileOnly useLatest ? "Anuken:MindustryBuilds:latest" : "Anuken:Mindustry:$mindustryVersion"
annotationProcessor "Anuken:jabel:v1.0.0"
}
//force arc version
configurations.all{
resolutionStrategy.eachDependency { details ->
if(details.requested.group == 'com.github.Anuken.Arc'){
details.useVersion "$mindustryVersion"
}
}
}
task jarAndroid{
dependsOn "jar"
doLast{
if(!sdkRoot || !new File(sdkRoot).exists()) throw new GradleException("No valid Android SDK found. Ensure that ANDROID_HOME is set to your Android SDK directory.");
def platformRoot = new File("$sdkRoot/platforms/").listFiles().sort().reverse().find{ f -> new File(f, "android.jar").exists()}
if(!platformRoot) throw new GradleException("No android.jar found. Ensure that you have an Android platform installed.")
//collect dependencies needed for desugaring
def dependencies = (configurations.compileClasspath.asList() + configurations.runtimeClasspath.asList() + [new File(platformRoot, "android.jar")]).collect{ "--classpath $it.path" }.join(" ")
def d8 = isWindows ? "d8.bat" : "d8"
//dex and desugar files - this requires d8 in your PATH
"$d8 $dependencies --min-api 14 --output ${project.archivesBaseName}Android.jar ${project.archivesBaseName}Desktop.jar"
.execute(null, new File("$buildDir/libs")).waitForProcessOutput(System.out, System.err)
}
}
jar{
archiveFileName = "${base.archivesBaseName}Desktop.jar"
from{
configurations.runtimeClasspath.collect{ it.isDirectory() ? it : zipTree(it) }
}
from(projectDir){
include "mod.hjson"
}
from("assets/"){
include "**"
}
}
task deploy(type: Jar){
dependsOn jarAndroid
dependsOn jar
archiveFileName = "${base.archivesBaseName}.jar"
from{ [zipTree("$buildDir/libs/${project.archivesBaseName}Desktop.jar"), zipTree("$buildDir/libs/${project.archivesBaseName}Android.jar")] }
doLast{
delete{
delete "$buildDir/libs/${project.archivesBaseName}Desktop.jar"
delete "$buildDir/libs/${project.archivesBaseName}Android.jar"
}
}
}
task compileAndCopy{
dependsOn jar
doLast{
copy{
from "$buildDir/libs/"
into "$modDir/"
include "${project.archivesBaseName}Desktop.jar"
}
}
}