上傳 jar 包到 Nexus 私服最簡單的莫過于在網頁上傳,只需要手動選擇需要上傳的文件即可。在這里介紹下利用gradle上傳jar包啤斗。上傳Maven倉庫主要可以使用maven-publish和maven插件,例子如下句旱。
使用maven-publish插件
1. 添加插件
apply plugin: 'maven-publish'
2. 打包jar
task buildJar(dependsOn: ['assembleRelease'], type: Jar) {
//后綴名
extension = "jar"
//最終的 Jar 包名
archiveName = "${project.getName()}-release.jar"
//需打包的資源所在的路徑集
def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"]
def srcKotlinClassDir = [project.buildDir.absolutePath + "/tmp/kotlin-classes/release"]
//初始化資源路徑集
from srcClassDir
from srcKotlinClassDir
//去掉不要的類
exclude('io/reactivex/android/R.class')
//需要打包的類
include('com/smartahc/android/smartble/*.class')
include('com/smartahc/android/smartble/**/*.class')
}
3. 配置Maven倉庫信息
publishing {
publications {
mavenJava(MavenPublication) {
groupId GROUP_ID
version = VERSION_NAME
artifactId ARTIFACT_ID
// Tell maven to prepare the generated "*.jar" file for publishing
def artifactPath = "$buildDir/libs/${project.getName()}-release.jar"
println(artifactPath)
artifact(artifactPath)
}
}
repositories {
maven {
// 指定要上傳的maven私服倉庫
url = MAVEN_LOCAL_PATH
//認證用戶和密碼
credentials {
username localRespos.userName
password localRespos.password
}
}
}
}
使用maven插件
1. 添加插件
apply plugin: 'maven'
2. 配置倉庫信息
afterEvaluate { project ->
uploadArchives {
repositories.mavenDeployer {
pom.groupId = localRespos.GROUP_ID
pom.artifactId = localRespos.POM_ARTIFACT_ID
pom.version = localRespos.VERSION_NAME
repository(url: getRepositoryUrl()) {
authentication(userName: localRespos.NEXUS_USERNAME, password: localRespos.NEXUS_PASSWORD)
}
}
}
task buildJar(dependsOn: ['assembleRelease'], type: Jar) {
extension = "jar" //后綴名
//最終的 Jar 包名
archiveName = "${project.getName()}-release.jar"
//需打包的資源所在的路徑集
def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"]
def srcKotlinClassDir = [project.buildDir.absolutePath + "/tmp/kotlin-classes/release"]
//初始化資源路徑集
from srcClassDir
from srcKotlinClassDir
//去掉不要的類
exclude('io/reactivex/android/R.class')
//需要打包的類
include('com/smartahc/android/smartble/*.class')
include('com/smartahc/android/smartble/**/*.class')
}
artifacts {
archives buildJar
}
}