@@ -3,6 +3,7 @@ plugins {
33 id ' net.darkhax.curseforgegradle' version ' 1.0.8'
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'
67 id ' com.modrinth.minotaur' version ' 2.+'
78}
89
@@ -142,27 +143,12 @@ dependencies {
142143
143144 // https://mvnrepository.com/artifact/org.graalvm.sdk/graal-sdk
144145 modLib " org.graalvm.sdk:graal-sdk:${ project.graal_version} "
146+ shadow " org.graalvm.sdk:graal-sdk:${ project.graal_version} "
145147 // https://mvnrepository.com/artifact/org.graalvm.js/js
146148 modLib (" org.graalvm.js:js:${ project.graal_version} " ) {
147149 exclude group : ' com.ibm.icu' , module : ' icu4j'
148150 }
149- // Every time the graal_version is changed, determine the list of deps to include in the jarJar by inspecting ./gradlew dependencies.
150- jarJar(group : ' org.graalvm.sdk' , name : ' graal-sdk' , version : " [${ project.graal_version} ]" )
151- jarJar(group : ' org.graalvm.sdk' , name : ' collections' , version : " [${ project.graal_version} ]" )
152- jarJar(group : ' org.graalvm.sdk' , name : ' nativeimage' , version : " [${ project.graal_version} ]" )
153- jarJar(group : ' org.graalvm.sdk' , name : ' word' , version : " [${ project.graal_version} ]" )
154- jarJar(group : ' org.graalvm.polyglot' , name : ' polyglot' , version : " [${ project.graal_version} ]" )
155- jarJar(group : ' org.graalvm.js' , name : ' js' , version : " [${ project.graal_version} ]" )
156- jarJar(group : ' org.graalvm.js' , name : ' js-community' , version : " [${ project.graal_version} ]" )
157- jarJar(group : ' org.graalvm.js' , name : ' js-language' , version : " [${ project.graal_version} ]" )
158- jarJar(group : ' org.graalvm.regex' , name : ' regex' , version : " [${ project.graal_version} ]" )
159- jarJar(group : ' org.graalvm.truffle' , name : ' truffle-api' , version : " [${ project.graal_version} ]" )
160- jarJar(group : ' org.graalvm.shadowed' , name : ' icu4j' , version : " [${ project.graal_version} ]" )
161- jarJar(group : ' org.graalvm.truffle' , name : ' truffle-runtime' , version : " [${ project.graal_version} ]" )
162- jarJar(group : ' org.graalvm.sdk' , name : ' jniutils' , version : " [${ project.graal_version} ]" )
163- jarJar(group : ' org.graalvm.truffle' , name : ' truffle-compiler' , version : " [${ project.graal_version} ]" )
164- jarJar(group : ' org.graalvm.truffle' , name : ' truffle-enterprise' , version : " [${ project.graal_version} ]" )
165- jarJar(group : ' org.graalvm.sdk' , name : ' nativebridge' , version : " [${ project.graal_version} ]" )
151+ shadow " org.graalvm.js:js:${ project.graal_version} "
166152
167153
168154 // Project lombok
@@ -271,15 +257,26 @@ task javadocJar(type: Jar, dependsOn: javadoc) {
271257 from javadoc. destinationDir
272258}
273259
274- jarJar. enable()
275- tasks. jarJar. configure {
276- archiveClassifier. set(' ' );
260+ shadowJar {
261+ mergeServiceFiles() // To fix graal issue: https://github.com/oracle/graaljs/issues/125
262+ configurations = [project. configurations. shadow]
263+ archiveClassifier. set(' ' ); // Replace the default JAR
264+ // To avoid clashes with other mods
265+ relocate ' org.graalvm' , ' org.cyclops.integratedscripting.vendors.org.graalvm'
266+ relocate ' com.ibm' , ' org.cyclops.integratedscripting.vendors.com.ibm'
267+ // Relocate everything from com.oracle, except for com.oracle.truffle, as this is defined in a native lib, which can not be relocated
268+ // relocate 'com.oracle', 'org.cyclops.integratedscripting.vendors.com.oracle'
269+ relocate ' com.oracle.js' , ' org.cyclops.integratedscripting.vendors.com.oracle.js'
270+ relocate ' com.oracle.svm' , ' org.cyclops.integratedscripting.vendors.com.oracle.svm'
271+ // relocate 'com.oracle.truffle', 'org.cyclops.integratedscripting.vendors.com.oracle.truffle' // Relocation of this fails for com.oracle.truffle.runtime.ModulesSupport at runtime
272+ }
273+ assemble. dependsOn shadowJar
274+ jar {
275+ shadowJar {}
277276}
278277
279-
280-
281278artifacts {
282- archives tasks . jarJar
279+ archives shadowJar
283280 archives deobfJar
284281 archives sourcesJar
285282 archives javadocJar
@@ -319,7 +316,7 @@ processResources {
319316task publishCurseForge (type : TaskPublishCurseForge ) {
320317 dependsOn(tasks. jar)
321318 apiToken = secrets. curseforgeKey;
322- def mainFile = upload(project. curseforge_project_id, tasks . jarJar )
319+ def mainFile = upload(project. curseforge_project_id, shadowJar )
323320 mainFile. releaseType = secrets. build_number. equals(" RELEASE" ) ? Constants . RELEASE_TYPE_RELEASE : Constants . RELEASE_TYPE_BETA
324321 mainFile. changelogType = " text"
325322 mainFile. changelog = secrets. changelog
@@ -337,7 +334,7 @@ modrinth {
337334 versionNumber = project. minecraft_version + ' -' + project. version
338335 versionName = " ${ project.version} for NeoForge ${ project.minecraft_version} "
339336 versionType = secrets. build_number. equals(" RELEASE" ) ? " release" : " beta"
340- uploadFile = tasks . jarJar
337+ uploadFile = shadowJar
341338 gameVersions = [ project. minecraft_version ]
342339 changelog = provider { secrets. changelog }
343340
@@ -374,7 +371,7 @@ publishing {
374371
375372 publications { PublicationContainer publicationContainer ->
376373 publicationContainer. register(" maven" , MavenPublication ) { MavenPublication publication ->
377- publication. artifacts = [tasks . jarJar , javadocJar, deobfJar, sourcesJar]
374+ publication. artifacts = [shadowJar , javadocJar, deobfJar, sourcesJar]
378375 publication. artifactId = project. archivesBaseName. toLowerCase() // GH can't handle uppercase...
379376 }
380377 }
0 commit comments