一.打包、部署、运行Class包
1.打包需要处理的问题
(1)资源文件不在默认的src\main\resources下如何处理
(2)依赖jar包处如何引入
-cp/-classpath后的参数值在windows以;分割,在linux以:分割
(3)main-class对同项目的其他的class依赖处理
-cp/-classpath参数值加入.
2.用gradle将class文件打包为Rpm包
(1)gradle.build配置文件关键部分
/**classes打包的五个task:copyConfig、copyScripts、copyLib、copyClasses、pkgAll,默认打包到$buildDir的rmp目录下**/
//复制资源文件
task copyConfig(type: Copy){
from "src/main/resources"
exclude "**/AVRO/**"
into "$buildDir/rpm/config"
}
//复制linux脚本文件
task copyScripts(type: Copy){
from "${project.rootDir}/scripts"
into "$buildDir/rpm/scripts"
fileMode 0755
}
//复制依赖,包括源代码的jar包
task copyLib(type: Copy){
from configurations.runtime
//from "$buildDir/libs"
into "$buildDir/rpm/lib"
fileMode 0755
}
task copyClasses(type: Copy){
from "$buildDir/classes/java/main"
into "$buildDir/rpm/"
}
//build任务默认会生成没有包含资源文件和manifest文件的jar包
//删除上一次打包的rpm包,保证新的编译开始之前删除老的build文件,而不会是新的编译完后再删除
compileJava.dependsOn clean
//保证 copyConfig, copyScripts, copyLib, copyClasses四个task在build后面执行
build.finalizedBy copyConfig
build.finalizedBy copyScripts
build.finalizedBy copyLib
build.finalizedBy copyClasses
/**虽然clean, build, copyConfig, copyScripts, copyLib, copyClasses会先于pkgAll执行,但是这6个task的执行顺序并不确定
* 所以需要定义这6个task的执行顺序
*/
task pkgAll(dependsOn:[clean, build, copyConfig, copyScripts, copyLib, copyClasses]){
doLast{
println "$project.name package created successfully"
}
}