前言:本文将告诉你如何将程序Jar与与依赖Jar及配置文件分离打包,以下列举了两种不同Maven打包方式,其打包效果一致!

一、第一种Maven打包方式,将jar及resources下全部配置文件,拷贝到指定目录:

<!--配置项-->
<properties>
<!--自定义配置-->
<project.jar.output.directory>E:/IDEAFile/file-copy/target/project</project.jar.output.directory>
</properties>
<build>
<plugins>
<!--项目依赖的jar文件,放置默认配置目录下-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> <!-- 设置jar的入口类 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.filecopy.FileCopyApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin> <!-- 使用maven-resources-plugin插件复制resources目录下所有文件到指定的路径-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/project</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin> <!--使用maven-antrun-plugin插件将jar复制到指定的目录下-->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<!-- 在maven进行package的时候执行-->
<phase>package</phase>
<configuration>
<tasks>
<!--todir:是将要复制jar包到的地方,overwrite:是否重写-->
<copy todir="${project.jar.output.directory}" overwrite="true">
<!--获取父目录下的target文件夹中的jar-->
<fileset dir="${project.build.directory}">
<include name="*.jar"/>
</fileset>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

第二种Maven打包方式使用 assembly插件,将jar及配置文件进行压缩打包到指定目录:

<plugins>
<!-- 项目依赖的jar文件,放置默认配置目录下-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> <!-- 设置jar的入口类-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.filecopy.FileCopyApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin> <!--assembly插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<!--指定压缩包名称-->
<finalName>project</finalName>
<!--指定assembly配置文件配置-->
<descriptors>
<descriptor>/assembly/assembly.xml</descriptor>
</descriptors>
<!--打包tar.gz输出target文件夹中-->
<outputDirectory>${project.build.directory}</outputDirectory>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

assembly文件:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>leaves</id>
<formats>
<!--压缩文件形式 可选 zip tar.gz等 -->
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory> <!-- 项目文件处理 -->
<fileSets>
<!--配置文件输出位置根目录文件夹下-->
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**</include>
</includes>
<filtered>true</filtered>
<outputDirectory>${file.separator}</outputDirectory>
</fileSet> <!-- 项目代码生成的jar文件放在根目录 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>${file.separator}</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>

个人总结:

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

最新文章

  1. Nginx中文域名配置
  2. PHOTOSHOP CC 2015插件安装方法
  3. PInvoke在 2.0 3.0的时候正常 升级到4.0后出错。
  4. gif图简介
  5. delphi 2010 动态链接库DLL断点调试
  6. 【转】Android LCD(一):LCD基本原理篇
  7. HTML——JAVASCRIPT——关灯效果
  8. MySQL中用decimal的原因
  9. ThinkPHP第二十二天(表单令牌、相对路径、扩展配置载入、$Think获取系统变量、$_SERVER(&#39;HTTP_REFERER&#39;)前页地址)
  10. Java 理论与实践: 正确使用 Volatile 变量(转)
  11. API 接口规范
  12. [leetcode-573-Squirrel Simulation]
  13. v2013调试无法访问此网站 localhost 拒绝了我们的连接请求
  14. BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
  15. Vue-校验props传来的值
  16. [POI2010]KLO-Blocks——一道值得思考的题
  17. 【Zookeeper】源码分析之网络通信(二)之NIOServerCnxn
  18. layui table 行号
  19. Netty源码分析第2章(NioEventLoop)----&gt;第8节: 执行任务队列
  20. Java日志 (zhuan)

热门文章

  1. redis数据量大时bgsave线程阻塞redis原因
  2. Windows生产力工具推荐
  3. Django----Serializer序列化
  4. NFS服务配置总结
  5. moviepy音视频剪辑:音视频的加载和输出
  6. Centos 7 下的java安装
  7. python-列表list和元组tuple
  8. zookeeper未授权访问渗透测试及修复方法
  9. 在iframe中获取另一个iframe中的元素
  10. WPF中DatePiker值绑定以及精简查询