需求
需要做一个公共业务包,包里引用了一些第三方的jar(文件形式), 需要打一个整包给业务服务使用,让业务服务不用关注这些第三方的jar, 同时不要打包其他的像日志库之类的东西。
解决
修改jar任务:
jar {
from {
configurations.runtimeClasspath.findAll {
//打包所有libs目录中的jar文件
it.parent.equals(project.rootDir.path + '/libs') && it.name.endsWith(".jar")
}.collect {
println 'add ' + it.name
zipTree(it)
}
}
}
打包,报错了:
- What went wrong:
Execution failed for task ‘:jar’. Entry META-INF/spring.factories is a duplicate but no duplicate handling strategy has been set.
提示文件META-INF/spring.factories重复 spring.factories是启动类, 想了想,我把第三方包中的启动类写到了当前项目的spring.factories中,然后在from中指定排除相同的文件:
jar {
from {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
....
}
}
再次打包: BUILD SUCCESSFUL in 735ms
|