使用maven,可以通过ossrh将文物推送到中央;除了通常的核心jar的maven-deploy-plugin之外,这还需要GPG签名,源代码和javadoc。
是否有一个配方可以用buildr安排所有这些?
答案 0 :(得分:2)
我们在Apache ODE中执行此操作,以便工件符合Apache的发布策略并被Nexus接受。我假设OSSRH的工作原理类似。
ODE中使用的GPG任务基于a Buildr How-to document,但略微扩展为可行。你可以找到它here。要在上传之前对所有工件进行签名,只需在您的顶层项目中添加gpg_sign_before_upload
(有关示例,请参阅here)。
答案 1 :(得分:1)
我刚刚离开并为我的几个项目实施了这个。这就是我必须做的事情。
Buildr包含一个内置的gpg插件,但是当一个工件没有pom时似乎有一个bug,所以我不得不放入patch来解决这个问题。然后我创建了一个自定义插件,允许我生成一个pom作为可用的构建过程的一部分here。然后我只是将一些元数据添加到主构建文件中,如演示here。所以忽略错误修复补丁和自定义插件。以下演示了添加到构建文件所需的代码
pom.add_apache2_license
pom.add_github_project('realityforge/gelf4j')
pom.add_developer('realityforge', 'Peter Donald', 'peter@realityforge.org', ['Developer'])
pom.optional_dependencies.concat [:getopt4j, :slf4j_api, :log4j, :logback_core, :logback_classic]
...
package(:jar)
package(:sources)
package(:javadoc)
然后我倾向于将发布位置的配置直接添加到构建文件中,或者更可能添加到与包含类似于以下代码的构建文件相同的目录中的_buildr.rb文件中
repositories.release_to[:url] = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
repositories.release_to[:username] = 'username'
repositories.release_to[:password] = 'password'
希望有所帮助。