以下是发布Android Studio库到私有Maven仓库的实例步骤,结合了Gradle配置、模块化管理和仓库发布的核心流程:
一、项目级配置
-
配置JDK环境(可选)
groovy// 项目根目录 gradle.properties 中添加JDK17配置(也可以设置电脑的环境变量未JDK17) org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
-
项目根目录
build.gradle
添加Maven插件和仓库源:
groovybuildscript { repositories { maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } dependencies { classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.10" // 用于生成Javadoc } }
二、模块级配置
(3) aar模块 build.gradle
groovy
// aar模块 build.gradle
plugins {
alias(libs.plugins.android.library)
id 'maven-publish'
}
android {
namespace 'com.lois.aarlib'
compileSdk 35
defaultConfig {
minSdk 21
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
publishing {
singleVariant("release") {
withSourcesJar() // 包含源码
withJavadocJar() // 包含文档(需dokka插件)
}
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
}
publishing {
publications {
release(MavenPublication) {
groupId = "com.github.luotengyuan.MavenTest" // 组 ID
artifactId = "AarLib" // 项目名称
version = "1.0.0" // 版本号
afterEvaluate {
from components.release // 发布release变体
}
}
}
repositories {
maven {
url = "http://[替换IP]:8081/repository/maven-releases/" // 替换为私有仓库URL
allowInsecureProtocol = true // 新版本gradle默认强制使用https,这里需要设置允许使用http
credentials {
username = "用户名" // 仓库认证用户名
password = "密码" // 仓库认证密码
}
}
}
}
(4) jar模块 build.gradle
groovy
// jar模块 build.gradle
plugins {
id 'java-library'
id 'maven-publish'
}
java {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
publishing {
publications {
release(MavenPublication) {
groupId = 'com.github.luotengyuan.MavenTest'
artifactId = 'JarLib'
version = '1.0.0'
afterEvaluate {
from components.java
artifact sourcesJar // 添加源码发布配置
artifact docJar // 添加源码发布配置
}
}
}
repositories {
maven {
url = "http://[替换IP]:8081/repository/maven-releases/" // 替换为私有仓库URL
allowInsecureProtocol = true // 新版本gradle默认强制使用https,这里需要设置允许使用http
credentials {
username = "用户名" // 仓库认证用户名
password = "密码" // 仓库认证密码
}
}
}
}
tasks.register('sourcesJar', Jar) {
from sourceSets.main.allJava
archiveClassifier = 'sources'
}
tasks.register('docJar', Jar) {
dependsOn javadoc // 确保先执行javadoc任务
from javadoc.destinationDir // 使用javadoc生成的文档目录
archiveClassifier = 'javadoc' // 修改分类器标识
}
三、发布到私有仓库
-
执行发布命令
执行Gradle任务生成aar、jar、源码和文档:
bash./gradlew clean # 清除 ./gradlew publish # 发布
-
查看发布文件
发布成功后,私有仓库中会生成以下文件结构:
aar包含内容如下:
jar包含内容如下:
四、其他项目引用
-
配置仓库地址
在项目的
settings.gradle
中添加私有仓库:groovydependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url = "http://[替换IP]:8081/repository/maven-releases/" // 替换为私有仓库URL allowInsecureProtocol = true // 新版本gradle默认强制使用https,这里需要设置允许使用http credentials { username = "用户名" // 仓库认证用户名 password = "密码" // 仓库认证密码 } } google() mavenCentral() } }
-
添加依赖
在模块的
build.gradle
中引用:groovydependencies { implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0' implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0' }
五、常见问题
-
认证失败
确保
credentials
中的用户名和密码与私有仓库(如Nexus)配置一致。 -
版本冲突
发布新版本时需递增
version
值,避免与历史版本冲突。 -
文档生成异常
检查是否应用了
dokka
插件,并确保代码注释符合Javadoc规范。
代码示例:https://github.com/luotengyuan/MavenPrivateTest
搭建私有仓库参考:https://blog.csdn.net/loutengyuan/article/details/146157808
发布代码到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967
发布本地仓库示例:https://blog.csdn.net/loutengyuan/article/details/145938967