java – 发布aar文件到Maven Central,Gradle不工作

前端之家收集整理的这篇文章主要介绍了java – 发布aar文件到Maven Central,Gradle不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
发布一个文件到Maven Central与Gradle仍然不工作:

好的,我们重新说明我遵循的所有步骤,设法“将文件发布到Maven Central with Gradle”(我主要跟随这个guide),只是为了确保…

1)我使用“Android Studio”,我有这个简单的android lib,我想要在maven:https://github.com/danielemaddaluno/Android-Update-Checker上可用

2)在UpdateCheckerLib文件夹中,我有上面提到的lib代码.并在该文件夹的build.gradle中应用插件:’com.android.library’我在模块目录的build / outputs / aar /目录中输出了一个.aar

3)我的第一步是找到一个批准的存储库.我决定使用Sonatype OSS Repository.这里我注册了一个项目,打开一个新的问题(创建 – >创建问题 – >社区支持 – 开源项目存储库托管 – >新项目)与groupid com.github.danielemaddaluno

4)所以我在项目的根目录中添加了一个文件:maven_push.gradle:

  1. apply plugin: 'maven'
  2. apply plugin: 'signing'
  3.  
  4. def sonatypeRepositoryUrl
  5. if (isReleaseBuild()) {
  6. println 'RELEASE BUILD'
  7. sonatypeRepositoryUrl = hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
  8. : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
  9. } else {
  10. println 'DEBUG BUILD'
  11. sonatypeRepositoryUrl = hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
  12. : "https://oss.sonatype.org/content/repositories/snapshots/"
  13. }
  14.  
  15. def getRepositoryUsername() {
  16. return hasProperty('nexusUsername') ? nexusUsername : ""
  17. }
  18.  
  19. def getRepositoryPassword() {
  20. return hasProperty('nexusPassword') ? nexusPassword : ""
  21. }
  22.  
  23. afterEvaluate { project ->
  24. uploadArchives {
  25. repositories {
  26. mavenDeployer {
  27. beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
  28.  
  29. pom.artifactId = POM_ARTIFACT_ID
  30.  
  31. repository(url: sonatypeRepositoryUrl) {
  32. authentication(userName: getRepositoryUsername(),password: getRepositoryPassword())
  33. }
  34.  
  35. pom.project {
  36. name POM_NAME
  37. packaging POM_PACKAGING
  38. description POM_DESCRIPTION
  39. url POM_URL
  40.  
  41. scm {
  42. url POM_SCM_URL
  43. connection POM_SCM_CONNECTION
  44. developerConnection POM_SCM_DEV_CONNECTION
  45. }
  46.  
  47. licenses {
  48. license {
  49. name POM_LICENCE_NAME
  50. url POM_LICENCE_URL
  51. distribution POM_LICENCE_DIST
  52. }
  53. }
  54.  
  55. developers {
  56. developer {
  57. id POM_DEVELOPER_ID
  58. name POM_DEVELOPER_NAME
  59. }
  60. }
  61. }
  62. }
  63. }
  64. }
  65.  
  66. signing {
  67. required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
  68. sign configurations.archives
  69. }
  70.  
  71. task androidJavadocs(type: Javadoc) {
  72. source = android.sourceSets.main.java.sourceFiles
  73. }
  74.  
  75. task androidJavadocsJar(type: Jar) {
  76. classifier = 'javadoc'
  77. //basename = artifact_id
  78. from androidJavadocs.destinationDir
  79. }
  80.  
  81. task androidSourcesJar(type: Jar) {
  82. classifier = 'sources'
  83. //basename = artifact_id
  84. from android.sourceSets.main.java.sourceFiles
  85. }
  86.  
  87. artifacts {
  88. //archives packageReleaseJar
  89. archives androidSourcesJar
  90. archives androidJavadocsJar
  91. }
  92. }

6)我在文件gradle.properties中添加了以下几行:

  1. VERSION_NAME=1.0.1-SNAPSHOT
  2. VERSION_CODE=2
  3. GROUP=com.github.danielemaddaluno
  4.  
  5. POM_DESCRIPTION=Android Update Checker
  6. POM_URL=https://github.com/danielemaddaluno/Android-Update-Checker
  7. POM_SCM_URL=https://github.com/danielemaddaluno/Android-Update-Checker
  8. POM_SCM_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git
  9. POM_SCM_DEV_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git
  10. POM_LICENCE_NAME=The Apache Software License,Version 2.0
  11. POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
  12. POM_LICENCE_DIST=repo
  13. POM_DEVELOPER_ID=danielemaddaluno
  14. POM_DEVELOPER_NAME=Daniele Maddaluno

7)在根目录下,我修改了build.gradle:

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:1.0.0'
  7. }
  8. }
  9.  
  10. allprojects {
  11. repositories {
  12. jcenter()
  13. }
  14. }

为此:

  1. buildscript {
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:1.0.0'
  7. }
  8. }
  9.  
  10. def isReleaseBuild() {
  11. return version.contains("SNAPSHOT") == false
  12. }
  13.  
  14. allprojects {
  15. version = VERSION_NAME
  16. group = GROUP
  17.  
  18. repositories {
  19. mavenCentral()
  20. }
  21. }
  22.  
  23. apply plugin: 'android-reporting'

8)我看到,对于每个要上传到中央的模块或应用程序,我应该:

>提供一个gradle.propeties
>修改build.gradle在末尾添加以下行:
适用于:’../maven_push.gradle’

所以在UpdateCheckerLib文件夹中我:

>添加了一个gradle.properties:

  1. POM_NAME=Android Update Checker
  2. POM_ARTIFACT_ID=androidupdatechecker
  3. POM_PACKAGING=aar

>修改build.gradle在文件底部添加以下行:apply from:’../maven_push.gradle’

9)为了签署我的文物,我做了:

  1. gpg --gen-key
  2. gpg --list-keys --> get my PubKeyId...
  3. gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PubKeyId

10)我添加了一个文件到〜/ .gradle / gradle.properties路径与这样的内容(获得秘密密钥我使用gpg –list-secret-keys):

  1. signing.keyId=xxxxxxx
  2. signing.password=YourPublicKeyPassword
  3. signing.secretKeyRingFile=~/.gnupg/secring.gpg
  4.  
  5. nexusUsername=YourSonatypeJiraUsername
  6. nexusPassword=YourSonatypeJiraPassword

11)sudo apt-get安装毕业生在终端,因为“Andoid Studio”teminal没有认识到毕业…

12)终于毕业了上传档案

13)我得到这个错误

  1. FAILURE: Build Failed with an exception.
  2.  
  3. * Where:
  4. Build file '/home/madx/Documents/Workspace/Android-Update-Checker/UpdateCheckerLib/build.gradle' line: 1
  5.  
  6. * What went wrong:
  7. A problem occurred evaluating project ':UpdateCheckerLib'.
  8. > Could not create plugin of type 'LibraryPlugin'.

可能这只是一个毕业/毕业插件问题,但我想分享所有的程序,以防万一它可以有助于别人!

提前致谢!

发布一个aar文件到jCenter与Gradle仍然不工作:

非常感谢JBaruch和他的工作人员!所以我试图发布到jCenter而不是Maven Central,事实上jcenter()是mavenCentral()的超集.
好的,让我们从我的github库Android-Update-Checker重新开始.
我试图跟随他的一些提示,但我仍然卡住了
我也要为自己的发布写脚步(希望对某人有用).也许我错过了一些…

1)注册到Bintray用户名:danielemaddaluno

2)启用上传内容自动签名:
来自Bintray profile url – > GPG签名 – >复制粘贴您的公钥/私钥.您可以在文件public_key_sender.asc / private_key_sender.asc中分别找到这两个
如果您执行以下代码(用于生成ASCII装甲密钥对的gpgis中的-a或–armor选项):

  1. gpg --gen-key
  2. gpg -a --export daniele.maddaluno@gmail.com > public_key_sender.asc
  3. gpg -a --export-secret-key daniele.maddaluno@gmail.com > private_key_sender.asc

2.1)在同一个web page中,您可以从以下位置配置自动签名:存储库 – > Maven – >检查“GPG自动上传文件” – >更新

3)在同一个web page中,您可以找到您的Bintray API密钥(复制以供以后使用)

4)在同一个web page中,您可以配置您的Sonatype OSS用户(在我已经创建用户和问题的问题的上一部分中)

5)我将这两行添加到根中的build.gradle

  1. classpath 'com.github.dcendents:android-maven-plugin:1.2'
  2. classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1"

所以我自己的build.gradle在根看起来像:

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:1.0.0'
  7. classpath 'com.github.dcendents:android-maven-plugin:1.2'
  8. classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1"
  9. }
  10. }
  11.  
  12. allprojects {
  13. repositories {
  14. jcenter()
  15. }
  16. }

6)我修改了我的build.gradle位于我的项目文件夹,它看起来像:

  1. apply plugin: 'com.android.library'
  2. apply plugin: 'com.github.dcendents.android-maven'
  3. apply plugin: "com.jfrog.bintray"
  4.  
  5. // This is the library version used when deploying the artifact
  6. version = "1.0.0"
  7.  
  8. android {
  9. compileSdkVersion 21
  10. buildToolsVersion "21.1.2"
  11.  
  12. defaultConfig {
  13. //applicationId "com.madx.updatechecker.lib"
  14. minSdkVersion 8
  15. targetSdkVersion 21
  16. versionCode 1
  17. versionName "1.0.0"
  18. }
  19. buildTypes {
  20. release {
  21. minifyEnabled false
  22. proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
  23. }
  24. }
  25. }
  26.  
  27. dependencies {
  28. compile fileTree(dir: 'libs',include: ['*.jar'])
  29. compile 'org.jsoup:jsoup:1.8.1'
  30. }
  31.  
  32.  
  33. def siteUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker' // Homepage URL of the library
  34. def gitUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker.git' // Git repository URL
  35. group = "com.github.danielemaddaluno.androidupdatechecker" // Maven Group ID for the artifact
  36.  
  37.  
  38. install {
  39. repositories.mavenInstaller {
  40. // This generates POM.xml with proper parameters
  41. pom {
  42. project {
  43. packaging 'aar'
  44.  
  45. // Add your description here
  46. name 'The project aims to provide a reusable instrument to check asynchronously if exists any newer released update of your app on the Store.'
  47. url siteUrl
  48.  
  49. // Set your license
  50. licenses {
  51. license {
  52. name 'The Apache Software License,Version 2.0'
  53. url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
  54. }
  55. }
  56. developers {
  57. developer {
  58. id 'danielemaddaluno'
  59. name 'Daniele Maddaluno'
  60. email 'daniele.maddaluno@gmail.com'
  61. }
  62. }
  63. scm {
  64. connection gitUrl
  65. developerConnection gitUrl
  66. url siteUrl
  67.  
  68. }
  69. }
  70. }
  71. }
  72. }
  73.  
  74. task sourcesJar(type: Jar) {
  75. from android.sourceSets.main.java.srcDirs
  76. classifier = 'sources'
  77. }
  78.  
  79. task javadoc(type: Javadoc) {
  80. source = android.sourceSets.main.java.srcDirs
  81. classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
  82. }
  83.  
  84. task javadocJar(type: Jar,dependsOn: javadoc) {
  85. classifier = 'javadoc'
  86. from javadoc.destinationDir
  87. }
  88. artifacts {
  89. archives javadocJar
  90. archives sourcesJar
  91. }
  92.  
  93.  
  94.  
  95. Properties properties = new Properties()
  96. properties.load(project.rootProject.file('local.properties').newDataInputStream())
  97.  
  98. bintray {
  99. user = properties.getProperty("bintray.user")
  100. key = properties.getProperty("bintray.apikey")
  101.  
  102. configurations = ['archives']
  103. pkg {
  104. repo = "maven"
  105. name = "androidupdatechecker"
  106. websiteUrl = siteUrl
  107. vcsUrl = gitUrl
  108. licenses = ["Apache-2.0"]
  109. publish = true
  110. }
  111. }

7)我添加到root local.properties根文件中,如下所示:

  1. bintray.user=<your bintray username>
  2. bintray.apikey=<your bintray API key>

8)添加到我的PATH中的默认渐变2.2.1实际使用的“Android Studio”,例如:

  1. PATH=$PATH:/etc/android-studio/gradle/gradle-2.2.1/bin

9)打开“Android Studio”终端并执行:

  1. gradle bintrayUpload

10)从Bintray – >我最近的包 – > androidupdatechecker(这只是在执行前面的点9之后) – >添加到Jcenter – >勾选框 – >组ID =“com.github.danielemaddaluno.androidupdatechecker”.

11)最后我试着跟随:Bintray – >我最近的包 – > androidupdatechecker – > Maven Central – >同步,但是我在页面右侧的“同步状态”栏中收到此错误

  1. Last Synced: Never
  2. Last Sync Status: Validation Failed
  3. Last Sync Errors:
  4. Missing Signature:
  5. '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-javadoc.jar.asc'
  6. does not exist for 'UpdateCheckerLib-1.0.0-javadoc.jar'.
  7. Missing Signature:
  8. '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.aar.asc'
  9. does not exist for 'UpdateCheckerLib-1.0.0.aar'.
  10. Missing Signature:
  11. '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-sources.jar.asc'
  12. does not exist for 'UpdateCheckerLib-1.0.0-sources.jar'.
  13. Missing Signature:
  14. '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom.asc'
  15. does not exist for 'UpdateCheckerLib-1.0.0.pom'.
  16. Invalid POM: /com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom:
  17. Project description missing Dropping existing partial staging repository.

解决方法

猜你在找的Java相关文章