网上大部分的上传文件都是只能上传android lib的,java lib会报错,下面的主要解决这个问题
创建一个文件maven_upload.gradle
如果你只有一个库需要上传,那你可以在库的目录下
如果你有很多库要上传,那么建议你放在项目根目录
apply plugin: 'maven'
def isReleaseBuild() {
return VERSION_NAME.toUpperCase().contains("SNAPSHOT") == false
}
def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
def getRepositoryUrl() {
return isReleaseBuild() ? RELEASE_REPOSITORY_URL : SNAPSHOT_REPOSITORY_URL
}
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
repository(url: getRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
}
}
}
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
}else{
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
}
//解决 JavaDoc 中文注释生成失败的问题
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}
artifacts {
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
archives androidSourcesJar
archives androidJavadocsJar
} else {
archives sourcesJar
archives javadocJar
}
}
}
然后就是填参数,参数一般写在gradle.properties中,如果你的项目的lib都是不相关的,那么你可以在你的lib目录中写gradle.properties。如果你想把一系列的lib打包成一个库,那么最好在项目根目录中写gradle.properties
比如
//上传构件的信息,一般是包名,例如:com.jakewharton
GROUP=com.XXXXX
//上传的目标仓库地址,一般不改
SNAPSHOT_REPOSITORY_URL=XXXXX
RELEASE_REPOSITORY_URL=XXXXX
//Nexus的私服的用户名称和密码,一般不改
NEXUS_USERNAME=XXXXX
NEXUS_PASSWORD=XXXXX
然后在lib库中定义版本和id
//正式版只能迭代不能覆盖,测试版用-SNAPSHOT结尾(这是硬性规定,否则无法上传成功)
VERSION_NAME=1.0.0-SNAPSHOT
//例如:butterknife-runtime
POM_ARTIFACT_ID=XXXXX
然后就可以在右边的gradle中,找到lib库——>Tasks——>upload——>uploadArchives
愉快的上传到了maven库
网友评论