Package reloaction

To avoid classpath conflicts with other plugins using the same dependencies, dependencies should be relocated to a unique package. More information can be found here.

The following Gradle configuration relocates all dependencies using the shadow plugin, that will be included in the jar file, to a new location:

plugins {
    id 'com.github.johnrengelman.shadow' version '6.1.0'
}

shadowJar {
    archiveClassifier.set('') // remove the 'all' suffix
}

import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
task relocateShadowJar(type: ConfigureShadowRelocation) {
    target = tasks.shadowJar
    prefix = "mypluginshadow" // Default value is "shadow"
}

tasks.shadowJar.dependsOn tasks.relocateShadowJar

Afterwards a jar file can be built by running the Gradle task shadowJar.

Last updated