我有一个文件夹($buildDir/some/lib)里面有很多罐子。我想要创建一个罐子,里面有所有的罐子,但没有拉链。我试过很多次,但都失败了,包括以下一件:
task fatJar(type: Jar, dependsOn: 'someTask') {
manifest {
attributes 'Main-Class': 'some.Main'
}
baseName = project.name + '-all'
from ("$buildDir/some/lib") {
eachFile { it.isDirectory() ? it : zipTree(it) } }
with jar
}在这种情况下,错误是:
无法将所提供的符号转换为File或URI: file‘/path/ to / the /buidDir/ or /omeJar.jar’。
有什么帮助吗?
编辑:我把它改成了这个,但它还是不起作用。罐子是复制的,但没有打开包装。帮助!为什么这么难?
task fatJar(....) {
manifest {
.....
}
baseName = project.name + '-all'
FileCollection collection = files("$buildDir/some/lib")
from collection.collect { it.isDirectory() ? it : zipTree(it) }
with jar
}发布于 2018-11-05 08:57:15
您可以执行以下操作:
task fatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'some.Main'
}
baseName = project.name + '-all'
project.fileTree("$buildDir/some/lib").forEach { jarFile ->
from zipTree(jarFile )
}
with jar
}Note
在您的第一个解决方案中,您会得到错误“无法将所提供的符号转换为文件或URI.”因为在eachFile闭包中(参见CopySpec.eachFile(),您可以操作FileCopyDetails对象,而zipTree方法需要Zip路径)。一种解决方案是使用getPath()方法:eachFile { it.isDirectory() ? it : zipTree(it.getPath()) } }
https://stackoverflow.com/questions/53141024
复制相似问题