方法一用 springboot 可以加上 <executable>true</executable>,这样打出来的包能够直接执行,但是实际上还是产生了两个进程,一个 shell 进程,一个 java 执行的子进程;杀掉 shell 进程一样能够停止。该方法我没在 windows 测试过。 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build>方法二使用spring-native。不通过 jvm 执行,而是直接编译成可执行文件。优点是启动快,性能高,消耗资源低。缺点是构建慢,运行优化有一点不足但是我认为不影响使用。能够完美的符合你的要求,但是这是一个较新的技术,使用起来可能有未知的风险。方法三(linux 补充)使用 alias,alias javareplace=java目前除了上面方法外,没有其它方法了。
方法一
用
springboot
可以加上<executable>true</executable>
,这样打出来的包能够直接执行,但是实际上还是产生了两个进程,一个 shell 进程,一个 java 执行的子进程;杀掉 shell 进程一样能够停止。该方法我没在 windows 测试过。
方法二
使用spring-native。
不通过 jvm 执行,而是直接编译成可执行文件。
优点是启动快,性能高,消耗资源低。
缺点是构建慢,运行优化有一点不足但是我认为不影响使用。
能够完美的符合你的要求,但是这是一个较新的技术,使用起来可能有未知的风险。
方法三(linux 补充)
使用
alias
,alias javareplace=java
目前除了上面方法外,没有其它方法了。