Skip to content

Commit e3c6db7

Browse files
committed
Use jar-in-jar instead of shadowing, Closes #34
1 parent 58d7b37 commit e3c6db7

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

build.gradle

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ plugins {
33
id 'com.matthewprenger.cursegradle' version '1.4.0'
44
id 'com.github.kt3k.coveralls' version '2.12.0'
55
id 'com.diffplug.spotless' version '6.25.0'
6-
id 'com.github.johnrengelman.shadow' version '8.1.1'
76
id 'com.modrinth.minotaur' version '2.+'
87
}
98

@@ -106,11 +105,26 @@ dependencies {
106105
}
107106

108107
modLib "org.graalvm.sdk:graal-sdk:${project.graal_version}"
109-
shadow "org.graalvm.sdk:graal-sdk:${project.graal_version}"
110108
modLib ("org.graalvm.js:js:${project.graal_version}") {
111109
exclude group: 'com.ibm.icu', module: 'icu4j'
112110
}
113-
shadow "org.graalvm.js:js:${project.graal_version}"
111+
// Every time the graal_version is changed, determine the list of deps to include in the jarJar by inspecting ./gradlew dependencies.
112+
jarJar(group: 'org.graalvm.sdk', name: 'graal-sdk', version: "[${project.graal_version}]")
113+
jarJar(group: 'org.graalvm.sdk', name: 'collections', version: "[${project.graal_version}]")
114+
jarJar(group: 'org.graalvm.sdk', name: 'nativeimage', version: "[${project.graal_version}]")
115+
jarJar(group: 'org.graalvm.sdk', name: 'word', version: "[${project.graal_version}]")
116+
jarJar(group: 'org.graalvm.polyglot', name: 'polyglot', version: "[${project.graal_version}]")
117+
// jarJar(group: 'org.graalvm.js', name: 'js', version: "[${project.graal_version}]")
118+
// jarJar(group: 'org.graalvm.js', name: 'js-community', version: "[${project.graal_version}]")
119+
jarJar(group: 'org.graalvm.js', name: 'js-language', version: "[${project.graal_version}]")
120+
jarJar(group: 'org.graalvm.regex', name: 'regex', version: "[${project.graal_version}]")
121+
jarJar(group: 'org.graalvm.truffle', name: 'truffle-api', version: "[${project.graal_version}]")
122+
jarJar(group: 'org.graalvm.shadowed', name: 'icu4j', version: "[${project.graal_version}]")
123+
jarJar(group: 'org.graalvm.truffle', name: 'truffle-runtime', version: "[${project.graal_version}]")
124+
jarJar(group: 'org.graalvm.sdk', name: 'jniutils', version: "[${project.graal_version}]")
125+
jarJar(group: 'org.graalvm.truffle', name: 'truffle-compiler', version: "[${project.graal_version}]")
126+
jarJar(group: 'org.graalvm.truffle', name: 'truffle-enterprise', version: "[${project.graal_version}]")
127+
jarJar(group: 'org.graalvm.sdk', name: 'nativebridge', version: "[${project.graal_version}]")
114128

115129

116130
// Project lombok
@@ -235,28 +249,16 @@ task javadocJar(type: Jar, dependsOn: javadoc) {
235249
from javadoc.destinationDir
236250
}
237251

238-
shadowJar {
239-
mergeServiceFiles() // To fix graal issue: https://github.com/oracle/graaljs/issues/125
240-
configurations = [project.configurations.shadow]
241-
archiveClassifier.set(''); // Replace the default JAR
242-
// To avoid clashes with other mods
243-
relocate 'org.graalvm', 'org.cyclops.integratedscripting.vendors.org.graalvm'
244-
relocate 'com.ibm', 'org.cyclops.integratedscripting.vendors.com.ibm'
245-
// Relocate everything from com.oracle, except for com.oracle.truffle, as this is defined in a native lib, which can not be relocated
246-
// relocate 'com.oracle', 'org.cyclops.integratedscripting.vendors.com.oracle'
247-
relocate 'com.oracle.js', 'org.cyclops.integratedscripting.vendors.com.oracle.js'
248-
relocate 'com.oracle.svm', 'org.cyclops.integratedscripting.vendors.com.oracle.svm'
249-
// relocate 'com.oracle.truffle', 'org.cyclops.integratedscripting.vendors.com.oracle.truffle' // Relocation of this fails for com.oracle.truffle.runtime.ModulesSupport at runtime
250-
finalizedBy 'reobfShadowJar'
251-
}
252-
253-
assemble.dependsOn shadowJar
254-
reobf {
255-
shadowJar {} // Reobfuscate the shadowed JAR
252+
jarJar.enable()
253+
reobf.create('jarJar')
254+
tasks.jarJar.configure {
255+
archiveClassifier.set('');
256+
finalizedBy('reobfJarJar')
256257
}
258+
build.dependsOn tasks.jarJar
257259

258260
artifacts {
259-
archives shadowJar
261+
archives tasks.jarJar
260262
archives deobfJar
261263
archives sourcesJar
262264
archives javadocJar
@@ -273,7 +275,7 @@ curseforge {
273275
id = "889785" // my project url is http://minecraft.curseforge.com/mc-mods/889785/
274276
releaseType = project.project.release_type
275277
addGameVersion project.minecraft_version
276-
mainArtifact(shadowJar) {
278+
mainArtifact(tasks.jarJar) {
277279
relations {
278280
requiredDependency 'cyclops-core'
279281
requiredDependency 'integrated-dynamics'
@@ -302,7 +304,7 @@ modrinth {
302304
projectId = "uDJkuFRe"
303305
versionNumber = project.minecraft_version + '-' + project.mod_version
304306
versionType = project.release_type
305-
uploadFile = shadowJar
307+
uploadFile = tasks.jarJar
306308
gameVersions = [ project.minecraft_version ]
307309
changelog = ""
308310
if (new File("resources/changelog/${project.version}.txt").exists()) {
@@ -341,7 +343,7 @@ publishing {
341343

342344
publications { PublicationContainer publicationContainer ->
343345
publicationContainer.register("maven", MavenPublication) { MavenPublication publication ->
344-
publication.artifacts = [shadowJar, javadocJar, deobfJar, sourcesJar]
346+
publication.artifacts = [tasks.jarJar, javadocJar, deobfJar, sourcesJar]
345347
publication.artifactId = project.archivesBaseName.toLowerCase() // GH can't handle uppercase...
346348
}
347349
}

0 commit comments

Comments
 (0)