2014-03-26 41 views
1

我想用gradle发布我的android库到nexus,以便其他人可以使用代码。但它不工作并返回错误信息:发布android库到nexus与gradle

> Could not publish configuration 'archives' 

产生java.io.IOException:不能把HTTP:// my-server /关系/内容/库/ snapsho TS/TESTLIB/testlibdemo /不明/testlibdemo-unspecified.aar。从服务器收到状态代码400: 错误的请求

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

我是gradle的noob。这是我的构建文件。

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

我不确定这是否与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>") 
     } 
    } 
} 

其实,我在<项目>作为gradle.properties属性文件,所以我可以重写他们在命令行上,特别是用户名和密码。那样,当我从Team City构建时,我不会将我的凭据嵌入到同事可以看到的文件中。 Team City允许我将这些值存储为显示为**的构建变量。