tbe*_*not 8 java gradle shadowjar
我有一个包含8个子项目的gradle项目和一个配置的shadowjar任务来创建一个"all"jar.toplevel项目设置为对其所有子项具有依赖性,这告诉shadowjar要包括什么:
project(':') {
dependencies {
compile project(':jfxtras-agenda')
compile project(':jfxtras-common')
compile project(':jfxtras-controls')
compile project(':jfxtras-icalendarfx')
compile project(':jfxtras-icalendaragenda')
compile project(':jfxtras-menu')
compile project(':jfxtras-gauge-linear')
compile project(':jfxtras-font-roboto')
}
}
shadowJar {
classifier = null // do not append "-all", so the generated shadow jar replaces the existing jfxtras-all.jar (instead of generating jfxtras-all-all.jar)
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但maven central拒绝所有jar,因为它没有相关的源和javadocs jar.
我如何告诉gradle还生成源和javadoc?ShadowJar的文档说它应该默认执行此操作.
影子插件似乎没有构建胖源/ javadocs jar的功能.
下面,我提供一些简短的任务(javadocJar和sourcesJar),将构建胖javadoc和源jar.它们被链接在一起之后总是被执行shadowJar.但它不依赖于shadow jar插件.
subprojects {
apply plugin: 'java'
}
// Must be BELOW subprojects{}
task alljavadoc(type: Javadoc) {
source subprojects.collect { it.sourceSets.main.allJava }
classpath = files(subprojects.collect { it.sourceSets.main.compileClasspath })
destinationDir = file("${buildDir}/docs/javadoc")
}
task javadocJar(type: Jar, dependsOn: alljavadoc) {
classifier = 'javadoc'
from alljavadoc.destinationDir
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from subprojects.collect { it.sourceSets.main.allSource }
}
shadowJar.finalizedBy javadocJar
shadowJar.finalizedBy sourcesJar
Run Code Online (Sandbox Code Playgroud)
请注意,即使您已在子项目中应用插件,该subprojects部分也是必需的java.
另请注意,它不包括子项目可能依赖的第三方库的javadoc.但通常你不管怎么说都不想这样做.
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |