【问题标题】:How to publish aar file to Apache Archiva with Gradle如何使用 Gradle 将 aar 文件发布到 Apache Archiva
【发布时间】:2015-02-24 22:18:02
【问题描述】:

我正在尝试将我的 android 库生成的 aar 文件发布到我的 Apache Archiva Maven 服务器,但我还没有设法让它工作,因为这些示例都已过时 或者它们适用于 java 而不是 android

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

Gradle Documentation

其中描述了如何使用新的 API,它似乎将 uploadArchives 替换为 publishing 等等......

这就是我目前所得到的:

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?

【问题讨论】:

    标签: android gradle android-studio archiva aar


    【解决方案1】:

    自己解决了

    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'
               }
           }
       }
    
    }
    

    【讨论】:

    • 多么简单有效的解决方案。像魅力一样工作:)
    • 但是这不会构建正确的 pom.xml 文件,你会错过依赖数据并且没用
    • 它与构建过程无关,它只是将 aar 上传到您的服务器。您可能在其他地方遇到了另一个问题
    • Answer NOT WORK 正确。基本上正如 outlying 所指出的那样,您不会从这种方法中获得自动生成的 pom.xml,这将使生成的 aar 无用。
    • 我在生产环境中使用它已有两年多了。我没有看到任何与缺少 pom.xml 相关的问题。你为什么需要那个? @uniqueentity
    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2017-05-11
    • 2016-03-24
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多