零、跳过单元测试
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
true
${project.build.sourceEncoding}
org.apache.maven.plugins
maven-surefire-plugin
true
一、打包
1、在pom.xml中指定main类
2、打第三方包的mvn命令
#dependency:copy-dependencies 是将依赖的包打到dependency目录下
打包:clean package dependency:copy-dependencies
#-DoutputDirectory=lib 是将依赖的包打到指定(lib)目录下
打包:clean package dependency:copy-dependencies -DoutputDirectory=lib
二、项目启动
例:
jar包path: D:\software\eclispe-workspace\eclipse13\sunxj-package\target\lib\sunxj-package-0.0.1-SNAPSHOT.jar
D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -jar lib/sunxj-package-0.0.1-SNAPSHOT.jar com.a
+++++++++++++package-test++++++++++++++++
D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -classpath lib/* com.a.App
+++++++++++++package-test++++++++++++++++
D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -cp lib/* com.a.App
+++++++++++++package-test++++++++++++++++ 注:类加载器为app
D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -Djava.ext.dirs=lib com.a.App
+++++++++++++package-test++++++++++++++++ 注:类加载器为ext
三、第三方包打到lib下
1、pom配置:
2、目录结构
3、启动脚本
java -jar sunxj-mail-0.0.1-SNAPSHOT.jar
四、SpringBoot--使用appassembler-maven-plugin打包
appassembler-maven-plugin是一个用来为Java应用打包并生成启动脚本的Maven插件,使用起来非常简单,只需要在项目的pom.xml中加入插件的相关配置即可。它在脚本打包过程中,能够将项目的所有依赖自动复制到指定的打包目录中,并将这些依赖添加到classpath中。
官网地址:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/
一:生成可执行的启动脚本
打包命令:mvn clean package appassembler:assemble
二:生成后台服务程序
打包命令:mvn clean package appassembler:generate-daemons
Usage: { console | start | stop | restart | status | dump }
五、SpringBoot--使用appassembler-maven-plugin打包
1、pom.xml
org.springframework.boot
spring-boot-maven-plugin
a.App
repackage
org.apache.maven.plugins
maven-assembly-plugin
true
a.App
sunxj-package
src/main/assembly/assembly.xml
make-assembly
package
single
注:spring-boot-maven-plugin可有可无。有时,启动脚本为java -jar sunxj-package.jar。没有时,启动脚本为java -cp ./lib/* a.App
2、assembly.xml
${project.version}
dir
false
src/main/bin
bin
false
true
lib
provided
false
true
lib
system
false
true
lib
runtime