给工程打jar包时如何把libs中的jar包一并打入

当我们在进行maven打包时

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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包源代码拷入工程,然后一并打包(不推荐 )

方案二: 只需加入以下代码

1
2
3
4
5
6
7
8
task makeJar(type: Jar) {
//以下是需要打包进jar包中的内容
from(project.zipTree("libs/dom4j-2.1.1.jar"))
}
//包含第三方jar
artifacts {
archives makeJar
}

附加

  1. 如果我想打包源码, 那么加入以下代码:
1
2
3
4
5
6
7
8
9
10
11
// 源代码一起打包(不需要打包源代码的不要添加这几行)
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
}
  1. 如果我想打包文档, 那么加入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//生成文档注释
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
}
  1. 如果我想将两个jar包合并成一个jar包, 那么使用以下代码:
1
2
3
4
5
6
7
8
9
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包

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%