【发布时间】:2014-02-20 09:58:18
【问题描述】:
如何配置 Gradle 以将源和 javadoc jar 发布到存储库?
【问题讨论】:
如何配置 Gradle 以将源和 javadoc jar 发布到存储库?
【问题讨论】:
如果您使用的是 Gradle 6.0 或更高版本,则可以使用以下最低配置;注意新引入的withSourcesJar() 和withJavadocJar() 方法:
plugins {
id 'java'
id 'maven-publish'
}
group = 'com.example'
java {
withSourcesJar()
withJavadocJar()
}
publishing {
repositories {
maven {
url = 'file:///tmp/my-repo'
}
}
publications {
myJava(MavenPublication) {
from components.java
}
}
}
当然,你也可以使用ivy-publish插件代替maven-publish。
另请参阅 Gradle 文档:
【讨论】:
将以下代码添加到构建脚本中:
task packageJavadoc(type: Jar, dependsOn: 'javadoc') {
from javadoc.destinationDir
classifier = 'javadoc'
}
task packageSources(type: Jar, dependsOn: 'classes') {
from sourceSets.main.allSource
classifier = 'sources'
}
artifacts {
archives packageJavadoc
archives packageSources
}
使用 Gradle 1.10 测试
【讨论】:
sourcesJar(你称之为packageSources 依赖于classes;如果源编译失败,它会避免生成源jar:p
2017,Gradle 4.0 版:
apply plugin: 'maven'
apply plugin: 'maven-publish'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar
artifact packageJavadoc
}
}
}
javadoc {
source = sourceSets.main.allJava
classpath = configurations.compileClasspath
options
{
setMemberLevel JavadocMemberLevel.PUBLIC
setAuthor true
links "https://docs.oracle.com/javase/8/docs/api/"
}
}
task sourceJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allJava
}
task packageJavadoc(type: Jar) {
from javadoc
classifier = 'javadoc'
}
适用于 gradle publish 和 gradle publishToMavenLocal
【讨论】:
maven 插件吗?
Paolo Fulgoni 的答案一直有效,直到我将 Gradle 版本升级到 3.1。为了让 packageJavadoc 任务与 Gradle 3.1 一起工作,我发现我必须对其进行如下微调:
task packageJavadoc(type: Jar) {
from javadoc
classifier = 'javadoc'
}
【讨论】: