我正在尝试将我的 android 库生成的 aar 文件发布到我的 Apache Archiva Maven 服务器,但我还没有设法让它工作,因为这些示例都已经过时了 或者它们适用于 java 而不是 android
在注意到 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?
自己解决了
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'
}
}
}
}
我升级了 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 小丑社区,请查找:向后兼容、紧耦合和彩色帽子!