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

问题描述 投票:0回答:2

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

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

Gradle 文档

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

这就是我到目前为止所得到的:

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
2个回答
13
投票

自己解决了

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

}

0
投票

我升级了 Android Studio,因此也将极其脆弱的独特雪花(gradle)升级到版本 8,即

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip

此升级破坏了我的设置,这是我的修复,我将发布 aar 上传到我们的内部 Maven 存储库服务器(可能是 archiva,可能是 nexus 等);要上传,您需要运行“publishCrazyClownBehaviourPublicationToMavenRepository”任务。

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'maven-publish'
}

android {
    namespace = "die.gradle.die.please.lib"
    compileSdk 33

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 33
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    // this is important, scopes the build to the 'release' target/artifact
    publishing {
        singleVariant("release") 
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}
afterEvaluate {
    publishing {
        publications {

            repositories.maven {
                url "https://your.maven.repo/goes/here/"
                credentials {
                    username "crazy"
                    password "clown"
                }
            }

            crazyClownBehaviour(MavenPublication) {
                from components.release {
                    artifacts {
                        groupId 'die.gradle.die.please.lib'
                        artifactId 'die_gradle_die_please_lib'
                        version '6.6.6'
                        artifact 'build/outputs/aar/app-release.aar'
                    }
                }
            }
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {

}

欢迎来到 Gradle 小丑社区,请查找:向后兼容、紧耦合和彩色帽子!

© www.soinside.com 2019 - 2024. All rights reserved.