mvn exec用法,运行jar后台驻留进程

java工程如果打包成war,那依赖的jar包都会被包含进去。

不过如果开发java的后台驻留进程,那一般会打包成jar包的形式,要想在运行进程的时候找到所有的依赖包,基本有如下两种方式:

方式一:

maven assembly插件方式打包,这样所有的依赖jar包会整合到一个大的jar包里头,不太适合开发阶段,因为打包比较耗时。

方式二:

mavn exec插件,也是开发的时候推荐的方式。

这样运行java进程的时候就不需要再去为 -classpath而烦恼了。一般maven管理的工程,在工程的根目录下执行 mvn clean & mvn package,然后在运行以下示例命令就可以。

mvn exec:exec -Dexec.executable="java" -Dexec.args="-cp %classpath com.timer.TimerTask"

这样的好处是,本地的eclipse和线上测试机器,可以通过svn等代码管理工具做代码同步,改好代码需要测试的话,在本地svn commit,然后测试linux机器上运行svn up & mvn package & mvn exec:exec -D....命令就很方便测试了。

当然mvn exec:exec 还可以指定jvm参数,系统属性,比如

mvn exec:exec -Dexec.executable="java" -Dexec.args="-DsystemProperty1=value1 -DsystemProperty2=value2 -XX:MaxPermSize=256m -cp %classpath com.project.Main arg1 arg2"

 

运行mvn exec:exec...... 之后会看到除了主函数main进程之外,还有一个守护进程Launcher

如果主函数的进程被杀掉,只剩下守护进程Launcher的时候,守护进程也会自动从jvm中退出

原文地址:https://www.cnblogs.com/yanghuahui/p/3623982.html