背景
项目更新频繁,只有在服务器上才能验证,而jar有几十M,且网络特别差,每次上传jar到服务器浪费了大量时间,所以这里把lib和jar分离,在不涉及依赖jar版本变更的情况下,每次上传的只有一个大小才几百k的jar,大大提高了工作效率。
实现
pom屏蔽自带的打包插件
pom添加assembly插件
maven-assembly-plugin
false
src/main/resources/assembly.xml
make-assembly
package
single
resources下添加配置文件assembly.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
package
zip
true
${basedir}/src/main/resources
*.yml
true
${file.separator}config
${project.build.directory}/lib
${file.separator}lib
*.jar
${project.build.directory}
${file.separator}
*.jar
pom添加插件来拷贝依赖,版本3.0.2
org.apache.maven.plugins
maven-dependency-plugin
${maven.dependency.plugin.version}
copy-lib
prepare-package
copy-dependencies
${project.build.directory}/lib
false
false
true
compile
pom添加插件打包,指定main方法和依赖的位置,版本3.0.2
org.apache.maven.plugins
maven-jar-plugin
${maven.jar.plugin.version}
true
lib/
com.memexue.shares.SharesApplication
${artifactId}
${project.version}
${project.description}
pom添加snakeyaml,版本1.24
不添加的话项目会找不到yml文件。
org.yaml
snakeyaml
${snakeyaml.version}
结果
运行mvn package,在target目录下生成项目对应的zip文件shares-0.0.1-SNAPSHOT.zip。解压后包含:
shares-0.0.1-SNAPSHOT.jar
config/
lib/
运行jar文件效果和自带的打整包效果一样。
注意
如果依赖的文件有变更,版本变化或者新增、删除依赖,需要手动将lib中变化的文件同步到服务器上。
注意:本文归作者所有,未经作者允许,不得转载