Gradle `fatJar` 排除一些依赖过滤器不起作用
Gradle `fatJar` exclude some dependencies filter not working
我已经实现了低于 fatJar
的目标。
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes(
'Implementation-Title': project.name,
)
}
from {
configurations.compile
.filter({
!it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
!it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
})
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
configurations.runtimeClasspath
.filter({
!it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
!it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
})
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
sourceSets.main.output.classesDirs
}
}
但是,filtered Jar
中的 packages
仍然出现在我的 fatJar
中,为什么?我怎样才能排除这个罐子?
修正为
configurations {
infraJars
}
dependencies {
infraJars 'lib/aspectjrt-1.9.4.jar'
infraJars 'lib/aspectjtools-1.9.4.jar'
}
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes(
'Implementation-Title': project.name,
)
}
from {
(configurations.compile - configurations.infraJars)
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
(configurations.runtimeClasspath - configurations.infraJars)
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
sourceSets.main.output.classesDirs
}
configurations.compile.transitive = false
}
我已经实现了低于 fatJar
的目标。
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes(
'Implementation-Title': project.name,
)
}
from {
configurations.compile
.filter({
!it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
!it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
})
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
configurations.runtimeClasspath
.filter({
!it.name.equalsIgnoreCase('aspectjrt-1.9.4.jar')
!it.name.equalsIgnoreCase('aspectjtools-1.9.4.jar')
})
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
sourceSets.main.output.classesDirs
}
}
但是,filtered Jar
中的 packages
仍然出现在我的 fatJar
中,为什么?我怎样才能排除这个罐子?
修正为
configurations {
infraJars
}
dependencies {
infraJars 'lib/aspectjrt-1.9.4.jar'
infraJars 'lib/aspectjtools-1.9.4.jar'
}
task fatJar(type: Jar) {
zip64 = true
manifest {
attributes(
'Implementation-Title': project.name,
)
}
from {
(configurations.compile - configurations.infraJars)
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
(configurations.runtimeClasspath - configurations.infraJars)
.collect {
it.isDirectory() ? it : zipTree(it)
}
}
from {
sourceSets.main.output.classesDirs
}
configurations.compile.transitive = false
}