我偶然发现了一篇有关如何在Gradle中制作胖jar文件的文章。
jar {
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是
jar元素是什么?这是一种声明属性的方法。据我了解,我可以如下定义属性:
prop1 {prop2 {prop3.prop4 = 5}}
等效于:prop1.prop2.prop3.prop4 = 5
我还找到了有关ConfigurationContainer的文章:https : //gradle.org/docs/current/javadoc/org/gradle/api/artifacts/ConfigurationContainer.html。
但是,我无法在此处链接信息以显示完整图片。
cmc*_*nty 12
configurations.compile是对compile 配置中定义的所有工件的引用。
.collect {}是一个方法调用,它的一个参数是一个闭包。{}是一个空的闭包。
{ it.isDirectory() ? it : zipTree(it) }是闭包(即函数),它返回要包含在JAR中的文件的集合。it是每个闭包的默认参数,在这种情况下,它将是来自的JAR工件实例configurations.compile或本地文件路径实例。它可能是文件路径,因为它同时configurations支持JARS和已编译.class文件的本地文件系统路径。
闭包中的逻辑采用<conditional> ? <A> : <B>和的形式if <conditional> then return <A> else return <B>。
有条件的it.isDirectory()计算结果为True,如果it变量是一个目录。因此,如果it是目录,我们将返回it。如果不是目录,那么代码将假定它是一个JAR。
zipTree(it) 是一种从JAR中提取所有文件并将其作为集合返回的方法。
所有文件(目录或分解JARS)都从闭包中返回,然后“组合” collect为单个集合(例如FileTree)。
| 归档时间: |
|
| 查看次数: |
3776 次 |
| 最近记录: |