这个章节,我们将使用已经存在的应用。我们学习如何修改默认的启动脚本,如,JVM启动参数 -D启动系统配置,JVM内存等。

这个章节要确保我们使用的Spring Boot版本是1.3以上。如果不是的话,请在build.gradle加入以下代码。(注意,我们自己创建的db-counter-starter/build.gradle也要添加)

ext {
springBootVersion = '1.3.0.BUILD-SNAPSHOT'
}

我们需要声明application插件到build.gradle文件中,不再是自动包含Spring Boot Gradle插件。添加的命令是:apply plugin: 'application'

6.3.1如何使用

  1. 创建默认的可执行文件是非常容易,只要我们执行./gradlew clean bootRepackage命令即可。
  2. 我们可以通过执行./build/libs/bookpub-0.0.1-SNAPSHOT.jar来启动项目。
  3. 在生产环境中,我们老百姓稍微调整我们的环境配置,如GC配置、内存配置等。为了达到这个,我们将会修改默认的lauch.script文件。读者可以从:https://github.com/spring-projects/spring-boot.git这个地方的下载,目录是:spring-boot/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/

需要注意的是,lauch.script文件只是用于Linux和OS X的环境下。如果你需要在windows上运行,你需要自己写一个launch.script的文件,且这个文件是可以运行在windows的shell命令中。

  1. 我们修改launch.scipt文件,添加在大约288行的地方。

...
# Find Java
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
javaexe="$JAVA_HOME/bin/java"
elif type -p java 2>&1> /dev/null; then
javaexe=java
elif [[ -x "/usr/bin/java" ]]; then
javaexe="/usr/bin/java"
else
echo "Unable to find Java"
exit 1
fi
# Configure JVM Options
jvmopts="{{jvm_options:}}"
if [[ -n "JAVA_OPTS" ]]; then
jvmopts="$jvmopts $JAVA_OPTS"
fi
# Build actual command to execute
command="$javaexe $jvmopts -jar -
Dsun.misc.URLClassPath.disableJarChecking=true $jarfile $@"
# Action functions
start() {
...

  1. 接着,我们需要在build.gradle中加入如下代码:

applicationDefaultJvmArgs = [

"-Xms128m",

"-Xmx256m"

]

springBoot {

classifier = 'exec'

embeddedLaunchScript = file('launch.script')

embeddedLaunchScriptProperties = ['jvm_options' :

applicationDefaultJvmArgs.join(' ')]

}

  1. 执行./gradlew clean bootRun 命令,你将会看到JConsole VM Summary,我们也可以看到我们配置的参数信息:

  1. 我们也可以执行./gradlew clean bootRepackage命令和执行./build/libs/bookpub-0.0.1-SNAPSHOT-exec.jar的包,也可以看到与上面同样的信息。
  2. 我们也可以使用JAVA_OPTS环境变量来重载JVM的参数。我们可以使用JAVA_OPTS=-Xmx128m./build/libs/bookpub-0.0.1-SHAPSHOT-exec.jar命令和这样可以显示如下信息:

6.3.2使用原理

在我们定制的launch.script文件中,我们添加了jvmopts=”{{jvm_options:}}”,在样在创建和打包时会取代jvm_options的参数。这个是声明是在build.gradle文件中作为embeddedLaunchScriptProperties的参数:embeddedLaunchScriptProperties =

['jvm_options' : applicationDefaultJvmArgs.join(' ')]

JVM参数是硬编码的,它更好的包含如何让我们的应用使用bootRun任务和如何让它执行我们的JAR。为了达到这人目的,我们使用了applicationDefaultJvmArgs参数声明我们运行的目的。

6.3创建自己执行的二进制文件相关推荐

  1. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  2. linux创建进程读共享写复制,Linux下进程的创建、执行和终止

    1)进程的创建和执行 许多操作系统提供的都是产生进程的机制,也就是说,首先在新的地址空间里创建进程.读入可执行文件,后再开始执行.Linux中进程的创建很特别,它把上述步骤分解到两个单独的函数中去执行 ...

  3. linux——Shell脚本说明、创建、执行、调试

    一.什么是Shell shell也是操作系统中的一个软件,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口,系统中的命令用shell去解释shell接收系统回应的输出并显示其到屏幕中 ...

  4. linux 如何创建内核进程,Linux内核的进程创建和执行.pdf

    Linux内核的进程创建和执行 !"#$% 内核的进程创建和执行 徐 炜 摘 要 详细阐述了!"#$% 内核34 54 2 的进程创建和执行过程,分析了相应的算法.数据 结构和关键 ...

  5. linux进程的创建、执行和消亡

    在linux系统中,第一个进程是系统固有的,与生俱来的或者说是由内核的设计者安排好了的,内核在引导并完成了基本的初始化以后,就有了系统第一进程(实际上是内核线程).除此之外,所有其他的进程和内核线程都 ...

  6. sqlserver的存储过程mysql_mysql,sqlserver存储过程的创建及执行

    mysql,sqlserver存储过程的创建及执行 sqlserver: 创建不带参数的存储过程: CREATE PROCEDURE 'ProName' AS SELECT * FROM [dbo]. ...

  7. linux内核-进程三部曲:创建、执行与消亡

    就像世上万物都有产生.发展与消亡的过程一样,每个进程也有被创建.执行某段程序以后最后消亡的过程.在linux系统中,第一个进程时系统固有的.与生俱来的或者说是由内核的设计者安排好了的.内核在引导并完成 ...

  8. neutron创建network执行的那些命令

    [转载]neutron创建network执行的那些命令原文地址:http://www.cnblogs.com/popsuper1982/p/3849822.html 当搭建完openstack之后,在 ...

  9. 任务的创建与执行-4

    任务的创建与执行 1. 任务的创建与执行(执行的任务pom文件中必须是配置了docker插件的) (1) 回到首页, 点击新建按钮, 如下图, 输入名称, 选择创建一个Maven项目, 点击ok (2 ...

  10. springBoot 怎么利用maven 创建可以执行的jar文件?

    欢迎关注博主公众号:[纯洁的明依]文章由陈晓阳原创. 本人微信:chenxiaoyangzxy. 免费提供本人大量学习资料. 1 为了可以使用maven 创建可执行的jar文件 ,首先需要再pom.x ...

最新文章

  1. 2021中国国际消费电子博览会和青岛国际软件融合创新博览会盛大开幕
  2. sql server中将一个字段根据某个字符拆分成多个字段显示
  3. VTK:Rendering之InterpolateCamera
  4. Cortex-M3复位序列
  5. vsCode配置通过Github同步(Settings Sync)
  6. php 之将图片转换base64编码(为百度ocr作准备,解决 image format error)
  7. optimize 回收表空间的一些说明
  8. java 将ofd转为pdf(代码简单)
  9. 计算机报名验证码不出现怎么办,电脑显示验证码很慢或验证码显示不出来怎么办...
  10. 如何正确、高效地进行论文阅读和批判性思考
  11. 解决Vue3的undefined问题
  12. 织梦(dedecms)标签大全(非常全面)
  13. 数据集的文字标签(label)转成数字标签
  14. STM32 Cube MX 之hal库软件模拟IIC 可直接移植使用
  15. tplink无线桥接WDS小结
  16. Spring Cloud Gateway(二):Spring Cloud Gateway整合Eureka应用
  17. python全栈是什么
  18. 【立创开源】GL823K 读卡器
  19. 09 --> OpenWRT 的 linux内核patch方法,添加5G模块驱动
  20. 玩转GPS开发——持续更新

热门文章

  1. JS基础_自增和自减
  2. New Adventure----GUI Design Studio
  3. HTMLCSS学习笔记(三)----标签类型转换、样式重置
  4. linux指令-动态查看系统资源情况
  5. 使用ADO.net将数据导出到Excel并提供下载
  6. 计算机网络网络层之IP协议(5)——IP子网划分与子网掩码
  7. 攻防世界-Misc-gif
  8. HDOJ--2544--最短路
  9. java垃圾回收机制GC
  10. 「镁客·请讲」MyToken郭楠:从币情开始,做区块链链上的去中心化生态