It looks like you want to create a shadow Jar comprising the Jar created by :mainprj
and its dependencies. In this case, you'd probably have to apply the plugin to :mainprj
, not the root project. Also, unless you do have code in the root project, the java
and groovy
plugins shouldn't be applied there (but eclipse
should).
How To Shadow Multi Project Gradle Application
-
07-10-2022 - |
Question
I have a build.gradle file I am using to replace an old maven pom.xml composed of 2 modules and a third sub-module. I moved it to gradle in this way:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'groovy'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.gradle.plugins:shadow:0.7.4'
}
}
apply plugin: 'shadow'
sourceCompatibility = 1.7
version = '0.1'
jar {
manifest {
attributes 'Implementation-Title': 'mainprj', 'Implementation-Version': version
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'groovy'
repositories {
mavenCentral()
maven { url 'http://nexus.codehaus.org/snapshots' }
}
dependencies {
//some deps here
}
}
project(':mainprj') {
dependencies {
compile project(':subprj1')
compile project(':subprj2')
}
}
project(':subprj1') {
dependencies {
compile project(':subprj3')
//deps here
}
}
project(':subprj2') {
dependencies {
compile project(':subprj3')
//deps here
}
}
project(':subprj3') {
dependencies {
//deps here
}
}
shadow {
exclude 'META-INF/*.SF'
exclude 'META-INF/*.DSA'
exclude 'META-INF/*.RSA'
transformer(org.gradle.api.plugins.shadow.transformers.AppendingTransformer) { resource = 'META-INF/stuff' }
}
I would like to know how to get a "shadowed" package when I run "gradle shadow" from command line as if I run "gradle shadow" I get an empty jar. Any idea?
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow