Android 如何使用Gradle将aar文件发布到Apache Archiva

Android 如何使用Gradle将aar文件发布到Apache Archiva,android,gradle,android-studio,archiva,aar,Android,Gradle,Android Studio,Archiva,Aar,我正试图将生成的android库的aar文件发布到Apache Archiva Maven服务器上,但我还没有设法让它正常工作,因为其中一个示例已经过时 或者它们适用于java,而不适用于android 在注意到gradle示例中的大多数方法都已被弃用后,我发现了以下新文档: 它描述了如何使用新的API,该API似乎将上传档案替换为发布等等 到目前为止,我得到的是: apply plugin: 'com.android.library' apply plugin: 'maven' apply

我正试图将生成的android库的aar文件发布到Apache Archiva Maven服务器上,但我还没有设法让它正常工作,因为其中一个示例已经过时 或者它们适用于java,而不适用于android

在注意到gradle示例中的大多数方法都已被弃用后,我发现了以下新文档:

它描述了如何使用新的API,该API似乎将上传档案替换为发布等等

到目前为止,我得到的是:

apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'maven-publish'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"


defaultConfig {
    applicationId "com.mycompany.mylibrary"
    minSdkVersion 9
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
lintOptions {
    abortOnError false
}

}


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

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

publishing {

publications {
    mavenJava(MavenPublication) {
        groupId 'com.android.mylibrary'
        artifactId 'MyLibrary'
        version '1.0.0'

        from components.java

        artifact sourceJar {
            classifier "sources"
        }
    }
}
repositories {
    maven {
        url "myurl"
        credentials{
            username "user"
            password "password"
        }
    }
}
}
Gradle的东西对我来说简直是地狱。我不知道什么是对的,什么是错的,有些事情似乎在没有任何提示的情况下被改变了,这使得解决这些问题变得非常困难

如何将生成的aar文件自动上传到我的Apache Archiva?我自己解决了这个问题

apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'maven-publish'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"


repositories {
    mavenCentral()
}

defaultConfig {
    minSdkVersion 9
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}


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

task sourceJar(type: Jar) {
   classifier "source"
}

publishing {
   publications {

       repositories.maven {
           url 'myurl/repositories/myrepo'
           credentials {
               username "user"
               password "password"
           }
       }

       maven(MavenPublication) {
           artifacts {
               groupId 'com.mycompany'
               artifactId 'mylibrary'
               version '1.0'
               artifact 'build/outputs/aar/app-release.aar'
           }
       }
   }

}

这是一个多么简单有效的解决方案啊。像charm:)一样工作,但这不会生成正确的pom.xml文件,您将丢失dependency数据,而且uselessIt与构建过程无关,它只是将aar上载到您的服务器。您可能还有另一个问题,因为NSwer无法正常工作。基本上正如Outlieng所指出的那样,这种方法不会自动生成pom.xml,这会使生成的aar变得无用。我在生产中使用这种方法已经两年多了。我没有发现任何与丢失pom.xml相关的问题。你为什么需要这个@统一性