我正在尝试使用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"
}
}
}
答案 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允许我将这些值存储为构建变量,显示为 ** 。