当我们使用maven库发布项目时,如果publish.gradle
未配置javadoc
,则在nexus上会出现下图错误:
我们可以通过content
看到,我们的项目中确实没有javadoc.jar,如下图
其实这个错在sonatype给我们有解释,问题链接地址,如下图:
我们翻译了一下,大致原因如下:
sonatype强烈建议我们提供 Javadoc 和 Sources ⚓︎
使用 pom 以外的包装的项目必须提供包含 Javadoc 和源代码的 JAR 文件。为的事方便组件的使用者 自动访问 Javadoc 和以及源码,方便代码阅读。
遵循 Maven 存储库格式的这些文件的命名约定使用分类器 javadoc 和源,并将名称与 artifactId 和 version 与打包 jar 组合在一起。例如。与价值观
如果由于某种原因(例如,许可证问题或它是 Scala 项目),您无法提供 -sources.jar 或 -javadoc.jar ,请制作带有简单 README 的假 -sources.jar 或 -javadoc.jar 以通过检查。我们不想禁用这些规则,因为有些人在有选择的情况下倾向于跳过它,我们希望尽可能保持用户体验的质量。
所以我们要做的就是让我们的代码包含javadoc
和resource
,接着我们直接看代码:
apply plugin: 'maven-publish'
apply plugin: 'signing'
//将源码打包
task androidSourcesJar(type: Jar) {
classifier = 'sources'
exclude "**/R.class" //排除`R.class`
exclude "**/BuildConfig.class" //排除`BuildConfig.class`
}
//将文档打包成jar,因为nexus发布如果不包含javadoc的话是无法发布成功的,具体看:
//https://issues.sonatype.org/browse/OSSRH-52090?jql=text%20~%20%22Missing%3A%20no%20javadoc%20jar%20found%20in%20folder%22
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
archiveClassifier.set('javadoc')
}
//...
publishing {
publications {
release(MavenPublication) {
// Two artifacts, the `aar` and the sources
artifact("../plugin/com/eegets/plugin/upload/${PUBLISH_VERSION}/upload-${PUBLISH_VERSION}.jar")
artifact androidSourcesJar //将源码打包进aar,如果不需要可以去掉
artifact androidJavadocsJar //将注释打包进aar,如果不需要可以去掉
}
}
}
按照上述方式配置之后我们再次执行打包发布,此时可以看到发布包中已经包含了javadoc包了,如下图:
到这里,我们再次执行Close发布,等几分钟后再看结果是否成功!
如果对maven打包不理解的地方可以看我之前的一篇文章