Skip to content

Instantly share code, notes, and snippets.

@melix
Last active January 12, 2020 00:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save melix/7704daf5d5f0285f22b4582f84c3bf5f to your computer and use it in GitHub Desktop.
Save melix/7704daf5d5f0285f22b4582f84c3bf5f to your computer and use it in GitHub Desktop.
Publish an additional fat jar with Gradle
plugins {
id 'java-library'
id 'com.github.johnrengelman.shadow' version '5.2.0'
id 'maven-publish'
}
group = 'com.acme'
version = '1.0.0'
repositories {
jcenter()
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
api 'org.apache.commons:commons-math3:3.6.1'
implementation 'com.google.guava:guava:28.0-jre'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
}
configurations {
fatJarRuntimeElements {
canBeResolved = false
canBeConsumed = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EMBEDDED)) // means no relocation of packages
attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8)
}
outgoing.artifact(shadowJar)
}
}
components.java {
addVariantsFromConfiguration(configurations.fatJarRuntimeElements) {
mapToOptional() // make it a Maven optional dependency
}
}
test {
useJUnitPlatform()
}
publishing {
repositories {
maven {
url "${buildDir}/repo"
}
}
publications {
maven(MavenPublication) {
from components.java
}
}
}
{
"formatVersion": "1.1",
"component": {
"group": "com.acme",
"module": "shadow-example",
"version": "1.0.0",
"attributes": {
"org.gradle.status": "release"
}
},
"createdBy": {
"gradle": {
"version": "6.0.1",
"buildId": "c6wz7vnfqzhatcvyuxk6cysfwy"
}
},
"variants": [
{
"name": "apiElements",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.jvm.version": 8,
"org.gradle.libraryelements": "jar",
"org.gradle.usage": "java-api"
},
"dependencies": [
{
"group": "org.apache.commons",
"module": "commons-math3",
"version": {
"requires": "3.6.1"
}
}
],
"files": [
{
"name": "shadow-example-1.0.0.jar",
"url": "shadow-example-1.0.0.jar",
"size": 838,
"sha512": "b2e5da173e25217aa203b6953e935d354bf62425088aaeba22a0dff5a09b5000c80a116225e271b7ab5c6d916de0a4c7023450b6137d23b43894a2395efcb61e",
"sha256": "cd9772b053a92a43de4194213e5b8ea6da064999c96f8b6067661b797e2c160b",
"sha1": "9fb03a0a562eba278391942fb4956f2977b165b3",
"md5": "16d42814a37c111c0b285d5742672cf5"
}
]
},
{
"name": "runtimeElements",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.jvm.version": 8,
"org.gradle.libraryelements": "jar",
"org.gradle.usage": "java-runtime"
},
"dependencies": [
{
"group": "com.google.guava",
"module": "guava",
"version": {
"requires": "28.0-jre"
}
},
{
"group": "org.apache.commons",
"module": "commons-math3",
"version": {
"requires": "3.6.1"
}
}
],
"files": [
{
"name": "shadow-example-1.0.0.jar",
"url": "shadow-example-1.0.0.jar",
"size": 838,
"sha512": "b2e5da173e25217aa203b6953e935d354bf62425088aaeba22a0dff5a09b5000c80a116225e271b7ab5c6d916de0a4c7023450b6137d23b43894a2395efcb61e",
"sha256": "cd9772b053a92a43de4194213e5b8ea6da064999c96f8b6067661b797e2c160b",
"sha1": "9fb03a0a562eba278391942fb4956f2977b165b3",
"md5": "16d42814a37c111c0b285d5742672cf5"
}
]
},
{
"name": "fatJarRuntimeElements",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "embedded",
"org.gradle.jvm.version": 8,
"org.gradle.libraryelements": "jar",
"org.gradle.usage": "java-runtime"
},
"files": [
{
"name": "shadow-example-1.0.0-all.jar",
"url": "shadow-example-1.0.0-all.jar",
"size": 5146288,
"sha512": "32af947065bcaa341d36033b00d94c267a44256fede08f570a479ec6415cb31ba31ec41ad6a0b51d37f1b3631e98b2960764d2d7ba709f29bad57e3519b5c3b9",
"sha256": "4b746b2f8a1098f9441e20037ec8fd4ec5467023732d9e93d09d0a632c8e2b6c",
"sha1": "4fc29a2f15a3ed7ea0b84ecdb17938777376cbe2",
"md5": "271b1bd9a7c1a73e0e7f06516e8afc90"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment