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: apply plugin: 'maven' apply plugin: 'signing' def sonatypeRepositoryUrl if (isReleaseBuild()) { println 'RELEASE BUILD' sonatypeRepositoryUrl = hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" } else { println 'DEBUG BUILD' sonatypeRepositoryUrl = hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : "https://oss.sonatype.org/content/repositories/snapshots/" } def getRepositoryUsername() { return hasProperty('nexusUsername') ? nexusUsername : "" } def getRepositoryPassword() { return hasProperty('nexusPassword') ? nexusPassword : "" } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { authentication(userName: getRepositoryUsername(),password: getRepositoryPassword()) } pom.project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.sourceFiles } task androidJavadocsJar(type: Jar) { classifier = 'javadoc' //basename = artifact_id from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' //basename = artifact_id from android.sourceSets.main.java.sourceFiles } artifacts { //archives packageReleaseJar archives androidSourcesJar archives androidJavadocsJar } } 6)我在文件gradle.properties中添加了以下几行: VERSION_NAME=1.0.1-SNAPSHOT VERSION_CODE=2 GROUP=com.github.danielemaddaluno POM_DESCRIPTION=Android Update Checker POM_URL=https://github.com/danielemaddaluno/Android-Update-Checker POM_SCM_URL=https://github.com/danielemaddaluno/Android-Update-Checker POM_SCM_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git POM_SCM_DEV_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git POM_LICENCE_NAME=The Apache Software License,Version 2.0 POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID=danielemaddaluno POM_DEVELOPER_NAME=Daniele Maddaluno 7)在根目录下,我修改了build.gradle: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } allprojects { repositories { jcenter() } } 为此: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } def isReleaseBuild() { return version.contains("SNAPSHOT") == false } allprojects { version = VERSION_NAME group = GROUP repositories { mavenCentral() } } apply plugin: 'android-reporting' 8)我看到,对于每个要上传到中央的模块或应用程序,我应该: >提供一个gradle.propeties 所以在UpdateCheckerLib文件夹中我: >添加了一个gradle.properties: POM_NAME=Android Update Checker POM_ARTIFACT_ID=androidupdatechecker POM_PACKAGING=aar >修改build.gradle在文件底部添加以下行:apply from:’../maven_push.gradle’ 9)为了签署我的文物,我做了: gpg --gen-key gpg --list-keys --> get my PubKeyId... gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PubKeyId 10)我添加了一个文件到?/ .gradle / gradle.properties路径与这样的内容(获得秘密密钥我使用gpg –list-secret-keys): signing.keyId=xxxxxxx signing.password=YourPublicKeyPassword signing.secretKeyRingFile=~/.gnupg/secring.gpg nexusUsername=YourSonatypeJiraUsername nexusPassword=YourSonatypeJiraPassword 11)sudo apt-get安装毕业生在终端,因为“Andoid Studio”teminal没有认识到毕业… 12)终于毕业了上传档案 13)我得到这个错误: FAILURE: Build failed with an exception. * Where: Build file '/home/madx/Documents/Workspace/Android-Update-Checker/UpdateCheckerLib/build.gradle' line: 1 * What went wrong: A problem occurred evaluating project ':UpdateCheckerLib'. > Could not create plugin of type 'LibraryPlugin'. 可能这只是一个毕业/毕业插件问题,但我想分享所有的程序,以防万一它可以有助于别人! 提前致谢! 发布一个aar文件到jCenter与Gradle仍然不工作: 非常感谢JBaruch和他的工作人员!所以我试图发布到jCenter而不是Maven Central,事实上jcenter()是mavenCentral()的超集. 1)注册到Bintray用户名:danielemaddaluno 2)启用上传内容的自动签名: gpg --gen-key gpg -a --export daniele.maddaluno@gmail.com > public_key_sender.asc 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 classpath 'com.github.dcendents:android-maven-plugin:1.2' classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1" 所以我自己的build.gradle在根看起来像: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1" } } allprojects { repositories { jcenter() } } 6)我修改了我的build.gradle位于我的项目文件夹,它看起来像: apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: "com.jfrog.bintray" // This is the library version used when deploying the artifact version = "1.0.0" android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { //applicationId "com.madx.updatechecker.lib" minSdkVersion 8 targetSdkVersion 21 versionCode 1 versionName "1.0.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs',include: ['*.jar']) compile 'org.jsoup:jsoup:1.8.1' } def siteUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker' // Homepage URL of the library def gitUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker.git' // Git repository URL group = "com.github.danielemaddaluno.androidupdatechecker" // Maven Group ID for the artifact install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging 'aar' // Add your description here name 'The project aims to provide a reusable instrument to check asynchronously if exists any newer released update of your app on the Store.' url siteUrl // Set your license licenses { license { name 'The Apache Software License,Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'danielemaddaluno' name 'Daniele Maddaluno' email 'daniele.maddaluno@gmail.com' } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocJar(type: Jar,dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } artifacts { archives javadocJar archives sourcesJar } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg { repo = "maven" name = "androidupdatechecker" websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true } } 7)我添加到root local.properties根文件中,如下所示: bintray.user=<your bintray username> bintray.apikey=<your bintray API key> 8)添加到我的PATH中的默认渐变2.2.1实际使用的“Android Studio”,例如: PATH=$PATH:/etc/android-studio/gradle/gradle-2.2.1/bin 9)打开“Android Studio”终端并执行: gradle bintrayUpload 10)从Bintray – >我最近的包 – > androidupdatechecker(这只是在执行前面的点9之后) – >添加到Jcenter – >勾选框 – >组ID =“com.github.danielemaddaluno.androidupdatechecker”. 11)最后我试着跟随:Bintray – >我最近的包 – > androidupdatechecker – > Maven Central – >同步,但是我在页面右侧的“同步状态”栏中收到此错误: Last Synced: Never Last Sync Status: Validation Failed Last Sync Errors: Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-javadoc.jar.asc' does not exist for 'UpdateCheckerLib-1.0.0-javadoc.jar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.aar.asc' does not exist for 'UpdateCheckerLib-1.0.0.aar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-sources.jar.asc' does not exist for 'UpdateCheckerLib-1.0.0-sources.jar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom.asc' does not exist for 'UpdateCheckerLib-1.0.0.pom'. Invalid POM: /com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom: Project description missing Dropping existing partial staging repository. 解决方法
您可以将您的aar发布到JCenter.
这是default in Android Studio. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |