spring boot项目可以以jar包的形式执行运行。spring boot技术目前很火,因此了解可运行jar包的制作和执行过程很重要。
1、项目结构如下
2、我们以config模块为例子,其gradle文件配置如下
group 'spring-cloud-in-action'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
/**
* 自定义变量
*/
ext.vendor = 'IWill'
ext.email = 'yangjianzhouctgu@126.com'
/**
* 定义源文件所在目录和输出目录
*/
sourceSets {
main {
java{
srcDir 'src/main/java'
}
resources {
srcDir 'src/main/resources'
}
output.classesDir = "build/classes/main/"
output.resourcesDir = "build/classes/main/"
}
}
/**
* 定义第三方jar包库
*/
repositories {
mavenCentral()
}
/**
* 添加第三方库依赖
*/
dependencies {
compile("org.springframework.cloud:spring-cloud-starter:1.0.3.RELEASE")
compile("org.springframework.cloud:spring-cloud-config-server:1.0.2.RELEASE")
compile("org.springframework.cloud:spring-cloud-starter-eureka:1.0.3.RELEASE")
testCompile group: 'junit', name: 'junit', version: '4.12'
}
/**
* 将jar复制到指定目录
*/
task copyJars(type: Copy) {
from configurations.runtime
into 'build/libs/lib'
}
/**
* 将资源文件复制到指定目录
*/
task copyConfigs(type: Copy) {
from 'resources/'
into 'build/libs/resources'
}
task generateJar(type: Jar, dependsOn: [copyJars, copyConfigs, jar]) {
/**
* 指定MANIFEST.MF相关属性
*/
manifest {
attributes ('Implementation-Title': 'Gradle',
'Implementation-Version': version,
'Created-By': vendor,
'Email': email,
'Main-Class': 'com.springCloud.config.ConfigApplication',
'Class-Path': configurations.compile.collect {'lib/' + it.getName()}.join(' ')
)
}
/**
* 将build/classes/main中的文件复制到jar包的根目录下
*/
into('') {
from "build/classes/main"
}
/**
* 将build/libs/lib中的文件复制到jar包的libs目录下
*/
into('libs') {
from "build/libs/lib"
}
}
3、在config 模块的根目录下,执行gradle clean generateJar
4、变化后的项目结构如下
5、打开config-1.0-SNAPSHOT.jar,其结构如下
6、在config-1.0-SNAPSHOT.jar所在目录运行 java -jar config-1.0-SNAPSHOT.jar,结果如下:
总结:
这里主要用到了gradle的相关知识,sourceSets、task的等,还有一些细节配置等。学习运行spring boot的同时,也了解gradle的一些配置。