我一直试图将项目上传到maven存储库失败。这是我的项目结构:
_root
|_ lib1 (aar)
|_ lib2 (aar)
|_ javalib (jar)
问题是当我启动uploadArchives任务时,我没有创建pom.xml。 这似乎是由于我的口味(当我删除口味它工作正常),我无法弄清楚如何解决这个问题。 我真的需要使用口味...欢迎任何帮助;)
这是我的build.gradle文件:
root:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
ext.versionName = "$System.properties.version"
configure(subprojects) {
apply plugin: 'maven'
group = 'com.test.build'
version = project.versionName
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://localhost:8081/content/repositories/test/") {
authentication(userName: "admin", password: "admin123")
}
}
}
}
}
allprojects {
repositories {
jcenter()
}
}
lib1:
apply plugin: 'com.android.library'
android {
publishNonDefault true
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName project.versionName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
prod{}
intg{}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
intgCompile project(path: ':lib2', configuration: 'intgRelease')
prodCompile project(path: ':lib2', configuration: 'prodRelease')
}
lib2:
apply plugin: 'com.android.library'
android {
publishNonDefault true
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName project.versionName
}
buildTypes {
debug {
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
prod{}
intg{}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(path: ':javalib')
}
javalib:
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
答案 0 :(得分:4)
我终于找到了我的问题的答案: 这是不可能的,但有一天可能会这样做: 看到有关的文档: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication
我用这个解决方案解决了这个问题:
// default publication is production which will be published without env name
publishNonDefault true
defaultPublishConfig "productionRelease"
if (android.productFlavors.size() > 0) {
android.libraryVariants.all { variant ->
// Publish a main artifact, otherwise the maven pom is not generated
if (android.publishNonDefault && variant.name == android.defaultPublishConfig) {
def bundleTask = tasks["bundle${name.capitalize()}"]
artifacts {
archives(bundleTask.archivePath) {
classifier null
builtBy bundleTask
}
}
}
}
}
我对此不满意,但它现在可以完成这项工作......
答案 1 :(得分:0)
我花了很多时间发现为什么我的Android项目没有将我的模块上传到Maven。问题是因为我没有在文件defaultPublishConfig
的{{1}}括号内设置android {}
。下面的代码段是我解决问题的方式。您需要设置要发布到Maven的风味(访问Android Studio中的构建变体标签以查看所有风味名称):
build.gradle