使用gradle将android库发布到nexus

时间:2014-03-26 02:26:45

标签: android maven gradle

我正在尝试使用gradle将我的android库发布到nexus,以便其他人可以使用该代码。但它不起作用并返回错误消息:

> Could not publish configuration 'archives'
  

java.io.IOException:无法PUT http:// my-server / nexus / content / repositories / snapsho   TS / TESTLIB / testlibdemo /不确定/ testlibdemo-unspecified.aar。从服务器收到状态码400:    错误的要求

gradle是否支持将aar发布到Maven Central?

我是一个混蛋。这是我的构建文件。

buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:0.9.+'
}
}

apply plugin: 'maven'
apply plugin: 'android-library'


repositories {
mavenCentral()
flatDir name: "dist", dirs: "dist"
}

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"

defaultConfig {
    minSdkVersion 8
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {
compile 'com.android.support:appcompat-v7:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
}

uploadArchives {
repositories {
    maven {
        credentials {
            username "admin"
            password "admin123"
        }
        url "http://myserver/nexus/content/repositories/snapshots"
    }
}
}

1 个答案:

答案 0 :(得分:1)

我不确定这是否与Android相关,但对于普通的旧Java,我需要添加以下内容以使用http部署到Nexus存储库。

configurations {
    deployJars
}

dependencies {
    deployJars "org.apache.maven.wagon:wagon-http:2.2"
}

我在顶层build.gradle的子项目中有这个用于多项目构建。

我的uploadArchives与你的

看起来略有不同
uploadArchives {
    repositories.mavenDeployer {
        repository (url: "<repository url>") {
            authentication(userName: "<username>", password: "<password>")
        }
    }
}

我实际上有&lt;&gt;中的项目作为gradle.properties文件中的属性,所以我可以在命令行上覆盖它们,特别是用户名和密码。这样,当我从Team City构建时,我没有将我的凭据嵌入到同事可以看到的文件中。 Team City允许我将这些值存储为构建变量,显示为 **