当我们在进行maven打包时
apply plugin: 'maven'
uploadArchives { // 这里只是更新到本地,可以上传到自定义的maven仓库
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
pom.groupId = 'com.insworks.plugin'
pom.artifactId = 'framework-plugin'
pom.version = '1.0.3'
repository(url: uri("$rootDir/global/repo"))
}
}
}
如果工程在本地引用了第三方jar包, 那么直接使用uploadArchives
指令是无法将第三方jar包打进去的
解决方案如下:
方案一: 将jar包源代码拷入工程,然后一并打包(不推荐 )
方案二: 只需加入以下代码
task makeJar(type: Jar) {
//以下是需要打包进jar包中的内容
from(project.zipTree("libs/dom4j-2.1.1.jar"))
}
//包含第三方jar
artifacts {
archives makeJar
}
// 源代码一起打包(不需要打包源代码的不要添加这几行)
task androidSourcesJar(type: Jar) {
classifier = 'sources'
//指定源码目录
source = android.sourceSets.main.java.srcDirs
//加入第三方jar 这个是字节码文件
from(project.zipTree("libs/dom4j-2.1.1.jar"))
}
artifacts {
archives androidSourcesJar
}
//生成文档注释
task androidJavadocs(type: Javadoc) {
//如果出现错误 忽略不计
failOnError = false
//指定源码目录
source = android.sourceSets.main.java.srcDirs
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
}
//将文档打包成jar
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
//包含文档
artifacts {
archives androidJavadocsJar
}
task makeJar(type: Jar) {
//以下是需要打包进jar包中的内容
from(project.zipTree("libs/dom4j-2.1.1.jar"))
from(project.zipTree("build/libs/lib_framework_plugin.jar"))
//合体后的jar包名称
archiveName = "framework-plugin-1.0.1.jar"
//输出目录
destinationDir = file('build/libs')
}
然后执行makeJar
指令
成功后,可以在build目录中找到合并后的jar包