您现在的位置是:首页 > 编程语言学习 > 其他编程语言 > 文章正文 其他编程语言

SpringBoot分离打Jar包的两种配置方式

2022-11-26 09:59:05 其他编程语言

简介SpringBoot分离打Jar包的两种方式方式一:基于maven-jar-plugin注意这种方式打包出来的Jar基于插件提供的类加载器启动:org.springframewor...


SpringBoot分离打Jar包的两种方式

方式一:基于maven-jar-plugin

注意

  • 这种方式打包出来的Jar基于插件提供的类加载器启动:
    1. org.springframework.boot.loader.PropertiesLauncher 
  • 所有依赖包(包括systemScope),会通过插件 maven-dependency-plugin 自动复制到 lib 目录
  • 所有资源文件,会通过插件 maven-resources-plugin 自动复制到 config 目录
  • 此方式打包后,需要指定参数启动 -Dloader.path=lib路径,config路径
  • 打包完后部署需要的文件清单:(在 target/ 目录下都可以看到)
    • config/**:所有resources下的资源文件
    • lib/**:所有lib包,包括本地依赖
    • xxx.jar:应用Jar
  • 运行:java -Dloader.path=lib,config -Dspring.profiles.active=dev -jar main.jar

简略版配置

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4.     <properties> 
  5.         <!--依赖输出目录--> 
  6.         <lib-path>lib</lib-path> 
  7.         <!--配置文件输出目录--> 
  8.         <config-path>config</config-path> 
  9.         <!--jar包名称--> 
  10.         <final-name>xxx</final-name> 
  11.         <!--指定启动类--> 
  12.         <main-class>org.jeecg.JeecgSystemApplication</main-class
  13.     </properties> 
  14.  
  15.     <build> 
  16.         <!--项目名称--> 
  17.         <finalName>${final-name}</finalName> 
  18.         <plugins> 
  19.             <!--定义项目的编译环境--> 
  20.             <plugin> 
  21.                 <groupId>org.apache.maven.plugins</groupId> 
  22.                 <artifactId>maven-compiler-plugin</artifactId> 
  23.                 <configuration> 
  24.                     <source>1.8</source> 
  25.                     <target>1.8</target> 
  26.                     <encoding>UTF-8</encoding> 
  27.                 </configuration> 
  28.             </plugin> 
  29.             <!--maven的测试用例插件,建议跳过。--> 
  30.             <plugin> 
  31.                 <groupId>org.apache.maven.plugins</groupId> 
  32.                 <artifactId>maven-surefire-plugin</artifactId> 
  33.                 <configuration> 
  34.                     <skip>true</skip> 
  35.                 </configuration> 
  36.             </plugin> 
  37.             <!--这个是springboot的默认编译插件,他默认会把所有的文件打包成一个jar--> 
  38.             <plugin> 
  39.                 <groupId>org.springframework.boot</groupId> 
  40.                 <artifactId>spring-boot-maven-plugin</artifactId> 
  41.                 <configuration> 
  42.                     <skip>true</skip> 
  43.                 </configuration> 
  44.             </plugin> 
  45.             <!-- 打自定义的JAR包 --> 
  46.             <plugin> 
  47.                 <groupId>org.apache.maven.plugins</groupId> 
  48.                 <artifactId>maven-jar-plugin</artifactId> 
  49.                 <configuration> 
  50.                     <archive> 
  51.                         <manifest> 
  52.                             <addClasspath>true</addClasspath> 
  53.                             <!-- MANIFEST.MF 中 Class-Path 加入前缀 --> 
  54.                             <classpathPrefix>${lib-path}/</classpathPrefix> 
  55.                             <!-- jar包不包含唯一版本标识 --> 
  56.                             <useUniqueVersions>false</useUniqueVersions> 
  57.                             <!--指定入口类 --> 
  58.                             <mainClass>${main-class}</mainClass> 
  59.                         </manifest> 
  60.                         <manifestEntries> 
  61.                             <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 --> 
  62.                             <!--本地依赖,多个需要使用空格隔开--> 
  63.                             <Class-Path>./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar</Class-Path> 
  64.                         </manifestEntries> 
  65.                     </archive> 
  66.                     <outputDirectory>${project.build.directory}</outputDirectory> 
  67.                 </configuration> 
  68.             </plugin> 
  69.             <!-- 该插件的作用是用于复制依赖的jar包到指定的文件夹里 --> 
  70.             <plugin> 
  71.                 <groupId>org.apache.maven.plugins</groupId> 
  72.                 <artifactId>maven-dependency-plugin</artifactId> 
  73.                 <executions> 
  74.                     <execution> 
  75.                         <id>copy-dependencies</id> 
  76.                         <phase>package</phase> 
  77.                         <goals> 
  78.                             <goal>copy-dependencies</goal> 
  79.                         </goals> 
  80.                         <configuration> 
  81.                             <outputDirectory>${project.build.directory}/${lib-path}/</outputDirectory> 
  82.                         </configuration> 
  83.                     </execution> 
  84.                 </executions> 
  85.             </plugin> 
  86.             <!-- 该插件的作用是用于复制指定的文件 --> 
  87.             <plugin> 
  88.                 <groupId>org.apache.maven.plugins</groupId> 
  89.                 <artifactId>maven-resources-plugin</artifactId> 
  90.                 <executions> 
  91.                     <!-- 复制配置文件 --> 
  92.                     <execution> 
  93.                         <id>copy-resources</id> 
  94.                         <phase>package</phase> 
  95.                         <goals> 
  96.                             <goal>copy-resources</goal> 
  97.                         </goals> 
  98.                         <configuration> 
  99.                             <resources> 
  100.                                 <!--复制资源文件到外部,注意这里先不做filtering处理,防止某些静态文件损坏--> 
  101.                                 <resource> 
  102.                                     <filtering>false</filtering> 
  103.                                     <directory>src/main/resources</directory> 
  104.                                     <includes> 
  105.                                         <include>**/*</include> 
  106.                                     </includes> 
  107.                                 </resource> 
  108.                                 <!--仅针对yml配置文件filtering处理(占位符@@等)--> 
  109.                                 <resource> 
  110.                                     <filtering>true</filtering> 
  111.                                     <directory>src/main/resources</directory> 
  112.                                     <includes> 
  113.                                         <include>*.yml</include> 
  114.                                     </includes> 
  115.                                 </resource> 
  116.                             </resources> 
  117.                             <outputDirectory>${project.build.directory}/${config-path}</outputDirectory> 
  118.                         </configuration> 
  119.                     </execution> 
  120.                 </executions> 
  121.             </plugin> 
  122.         </plugins> 
  123.         <resources> 
  124.             <!--包含java类路径下的资源文件(mybatis的xml等)--> 
  125.             <resource> 
  126.                 <directory>src/main/java</directory> 
  127.                 <filtering>false</filtering> 
  128.                 <includes> 
  129.                     <include>**/*.xml</include> 
  130.                     <include>**/*.json</include> 
  131.                     <include>**/*.ftl</include> 
  132.                 </includes> 
  133.             </resource> 
  134.             <!--排除jar包内的所有resources配置文件--> 
  135.             <resource> 
  136.                 <directory>src/main/resources</directory> 
  137.                 <filtering>false</filtering> 
  138.                 <excludes> 
  139.                     <exclude>**/*</exclude> 
  140.                 </excludes> 
  141.             </resource> 
  142.             <!--注: 为了能在IDEA中跑起来,需要将所有yml配置文件打进jar包,filtering必须开启(处理占位符等操作)--> 
  143.             <resource> 
  144.                 <directory>src/main/resources</directory> 
  145.                 <filtering>true</filtering> 
  146.                 <includes> 
  147.                     <include>*.yml</include> 
  148.                 </includes> 
  149.             </resource> 
  150.         </resources> 
  151.     </build> 
  152. </project> 

完整配置(带部分注释)

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4.     <parent> 
  5.         <groupId>org.jeecgframework.boot</groupId> 
  6.         <artifactId>jeecg-boot-parent</artifactId> 
  7.         <version>2.4.0</version> 
  8.     </parent> 
  9.     <modelVersion>4.0.0</modelVersion> 
  10.     <artifactId>jeecg-boot-module-system</artifactId> 
  11.     <repositories> 
  12.         <repository> 
  13.             <id>aliyun</id> 
  14.             <name>aliyun Repository</name> 
  15.             <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
  16.             <snapshots> 
  17.                 <enabled>false</enabled> 
  18.             </snapshots> 
  19.         </repository> 
  20.     </repositories> 
  21.     <dependencies> 
  22.         <dependency> 
  23.             <groupId>com.spire</groupId> 
  24.             <artifactId>spire</artifactId> 
  25.             <version>10</version> 
  26.             <scope>system</scope> 
  27.             <systemPath>${project.basedir}/../lib/Spire.Doc.jar</systemPath> 
  28.         </dependency> 
  29.         <dependency> 
  30.             <groupId>com.zwdd.api</groupId> 
  31.             <artifactId>zwdd</artifactId> 
  32.             <version>1.2.0</version> 
  33.             <scope>system</scope> 
  34.             <systemPath>${project.basedir}/../lib/zwdd-sdk-java-1.2.0.jar</systemPath> 
  35.         </dependency> 
  36.     </dependencies> 
  37.  
  38.     <properties> 
  39.         <!--依赖输出目录--> 
  40.         <lib-path>lib</lib-path> 
  41.         <!--springboot默认打包输出目录--> 
  42.         <jar-path>jar</jar-path> 
  43.         <!--配置文件输出目录--> 
  44.         <config-path>config</config-path> 
  45.         <!--jar包名称--> 
  46.         <final-name>xxx</final-name> 
  47.         <!--指定启动类--> 
  48.         <main-class>org.jeecg.JeecgSystemApplication</main-class
  49.     </properties> 
  50.  
  51.     <build> 
  52.         <!--项目名称--> 
  53.         <finalName>${final-name}</finalName> 
  54.         <plugins> 
  55.             <!--定义项目的编译环境--> 
  56.             <plugin> 
  57.                 <groupId>org.apache.maven.plugins</groupId> 
  58.                 <artifactId>maven-compiler-plugin</artifactId> 
  59.                 <configuration> 
  60.                     <source>1.8</source> 
  61.                     <target>1.8</target> 
  62.                     <encoding>UTF-8</encoding> 
  63.                 </configuration> 
  64.             </plugin> 
  65.             <!--maven的测试用例插件,建议跳过。--> 
  66.             <plugin> 
  67.                 <groupId>org.apache.maven.plugins</groupId> 
  68.                 <artifactId>maven-surefire-plugin</artifactId> 
  69.                 <configuration> 
  70.                     <skip>true</skip> 
  71.                 </configuration> 
  72.             </plugin> 
  73.             <!--这个是springboot的默认编译插件,他默认会把所有的文件打包成一个jar,注意这里打包出来不会包含systemScope的jar包,有需要的话得在最后的resources里配置--> 
  74.             <plugin> 
  75.                 <groupId>org.springframework.boot</groupId> 
  76.                 <artifactId>spring-boot-maven-plugin</artifactId> 
  77.                 <executions> 
  78.                     <execution> 
  79.                         <goals> 
  80.                             <goal>repackage</goal> 
  81.                         </goals> 
  82.                     </execution> 
  83.                 </executions> 
  84.                 <configuration> 
  85.                     <!--这里仅展示插件作用,直接跳过此插件--> 
  86.                     <skip>true</skip> 
  87.                     <mainClass>${main-class}</mainClass> 
  88.                     <fork>true</fork> 
  89.                     <addResources>true</addResources> 
  90.                     <!--指定激活的配置文件application-xxx.yml--> 
  91.                     <profiles>${profile.name}</profiles> 
  92.                     <outputDirectory>${project.build.directory}/${jar-path}</outputDirectory> 
  93.                 </configuration> 
  94.             </plugin> 
  95.             <!-- 打自定义的JAR包 --> 
  96.             <plugin> 
  97.                 <groupId>org.apache.maven.plugins</groupId> 
  98.                 <artifactId>maven-jar-plugin</artifactId> 
  99.                 <configuration> 
  100.                     <!-- 不打包资源文件(配置文件和依赖包分开),这里配置的资源排除,仅在*.xml这类文件通配符筛选生效,因此不在这里处理 --> 
  101.                     <excludes> 
  102.                         <!--这种文件方式匹配可以生效--> 
  103.                         <!--<exclude>*.yml</exclude>--> 
  104.                         <!--下面这种方式配置是无效的,见:https://stackoverflow.com/questions/4113697/in-maven-how-to-exclude-resources-from-the-generated-jar--> 
  105.                         <!--上述问题链接中有此描述:<exclude>src/test/resources/**</exclude> doesn't work. Exclude will be applied on jar final path and should be <exclude>*.properties</exclude>--> 
  106.                         <!--<exclude>src/main/resources/**</exclude>--> 
  107.                     </excludes> 
  108.                     <archive> 
  109.                         <manifest> 
  110.                             <addClasspath>true</addClasspath> 
  111.                             <!-- MANIFEST.MF 中 Class-Path 加入前缀 --> 
  112.                             <classpathPrefix>${lib-path}/</classpathPrefix> 
  113.                             <!-- jar包不包含唯一版本标识 --> 
  114.                             <useUniqueVersions>false</useUniqueVersions> 
  115.                             <!--指定入口类 --> 
  116.                             <mainClass>${main-class}</mainClass> 
  117.                         </manifest> 
  118.                         <manifestEntries> 
  119.                             <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 --> 
  120.                             <!--本地依赖,多个需要使用空格隔开--> 
  121.                             <Class-Path>./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar</Class-Path> 
  122.                         </manifestEntries> 
  123.                     </archive> 
  124.                     <outputDirectory>${project.build.directory}</outputDirectory> 
  125.                 </configuration> 
  126.             </plugin> 
  127.             <!-- 该插件的作用是用于复制依赖的jar包到指定的文件夹里 --> 
  128.             <plugin> 
  129.                 <groupId>org.apache.maven.plugins</groupId> 
  130.                 <artifactId>maven-dependency-plugin</artifactId> 
  131.                 <executions> 
  132.                     <execution> 
  133.                         <id>copy-dependencies</id> 
  134.                         <phase>package</phase> 
  135.                         <goals> 
  136.                             <goal>copy-dependencies</goal> 
  137.                         </goals> 
  138.                         <configuration> 
  139.                             <!--这里可以手动添加构建id,但默认是全打包就不需要了--> 
  140.                             <!--<includeArtifactIds>xxxx</includeArtifactIds>--> 
  141.                             <!--默认包含所有scope,因此本地的依赖也正常复制--> 
  142.                             <!--<includeScope>system</includeScope>--> 
  143.                             <outputDirectory>${project.build.directory}/${lib-path}/</outputDirectory> 
  144.                         </configuration> 
  145.                     </execution> 
  146.                 </executions> 
  147.             </plugin> 
  148.             <!-- 该插件的作用是用于复制指定的文件 --> 
  149.             <plugin> 
  150.                 <groupId>org.apache.maven.plugins</groupId> 
  151.                 <artifactId>maven-resources-plugin</artifactId> 
  152.                 <executions> 
  153.                     <!-- 复制配置文件 --> 
  154.                     <execution> 
  155.                         <id>copy-resources</id> 
  156.                         <phase>package</phase> 
  157.                         <goals> 
  158.                             <goal>copy-resources</goal> 
  159.                         </goals> 
  160.                         <configuration> 
  161.                             <resources> 
  162.                                 <!--复制资源文件到外部,注意这里先不做filtering处理,防止某些静态文件损坏--> 
  163.                                 <resource> 
  164.                                     <filtering>false</filtering> 
  165.                                     <directory>src/main/resources</directory> 
  166.                                     <includes> 
  167.                                         <!--<include>*.yml</include>--> 
  168.                                         <!--把所有resources目录下的资源文件复制出来--> 
  169.                                         <include>**/*</include> 
  170.                                     </includes> 
  171.                                 </resource> 
  172.                                 <!--仅针对yml配置文件filtering处理(占位符@@等)--> 
  173.                                 <resource> 
  174.                                     <filtering>true</filtering> 
  175.                                     <directory>src/main/resources</directory> 
  176.                                     <includes> 
  177.                                         <include>*.yml</include> 
  178.                                     </includes> 
  179.                                 </resource> 
  180.                             </resources> 
  181.                             <outputDirectory>${project.build.directory}/${config-path}</outputDirectory> 
  182.                         </configuration> 
  183.                     </execution> 
  184.                 </executions> 
  185.             </plugin> 
  186.         </plugins> 
  187.         <!--手动处理资源文件,这里的操作都是针对最终打出的jar包内部文件的进行引入、筛选、过滤等等,默认文件都打进jar包内部的根路径下,因此前面的插件[maven-jar-plugin]中需要配置相对路径--> 
  188.         <!--具体路径在这里: /project/build/plugins/[maven-jar-plugin]/configuration/archive/manifestEntries/Class-Path 添加classpath:. (注意和其它配置以空格分开)--> 
  189.         <resources> 
  190.             <!--包含java类路径下的资源文件(mybatis的xml等)--> 
  191.             <resource> 
  192.                 <directory>src/main/java</directory> 
  193.                 <filtering>false</filtering> 
  194.                 <includes> 
  195.                     <include>**/*.xml</include> 
  196.                     <include>**/*.json</include> 
  197.                     <include>**/*.ftl</include> 
  198.                 </includes> 
  199.             </resource> 
  200.             <!--排除jar包内的所有resources配置文件--> 
  201.             <resource> 
  202.                 <directory>src/main/resources</directory> 
  203.                 <!--filtering会做处理配置文件@@占位符等操作,但是不排除某些文件的话可能导致压缩损坏--> 
  204.                 <filtering>false</filtering> 
  205.                 <excludes> 
  206.                     <exclude>**/*</exclude> 
  207.                 </excludes> 
  208.             </resource> 
  209.             <!--注: 上述配置已经能够正常分离所有配置、外部依赖、工程代码,启动命令:java -jar xxx.jar--> 
  210.             <!--注: 但是工程打包后,你会发现IDEA上跑不起来(target/classes目录下没有配置文件)--> 
  211.             <!--注: 这里尝试过在IDEA启动app时指定JVM参数(但是没有用,谁研究过可以说下): -Dloader.path=lib,config--> 
  212.             <!--注: 为了能在IDEA中跑起来,需要将所有yml配置文件打进jar包,filtering必须开启(处理占位符等操作)--> 
  213.             <resource> 
  214.                 <directory>src/main/resources</directory> 
  215.                 <filtering>true</filtering> 
  216.                 <includes> 
  217.                     <include>*.yml</include> 
  218.                 </includes> 
  219.             </resource> 
  220.             <!--本地依赖打进jar包,这个配置是配合spring-boot-maven-plugin插件使用的--> 
  221.             <!--<resource>--> 
  222.             <!--    <directory>../lib/crack</directory>--> 
  223.             <!--    <targetPath>BOOT-INF/lib/</targetPath>--> 
  224.             <!--    <includes><include>**/*.jar</include></includes>--> 
  225.             <!--</resource>--> 
  226.             <!--<resource>--> 
  227.             <!--    <directory>../lib</directory>--> 
  228.             <!--    <targetPath>BOOT-INF/lib/</targetPath>--> 
  229.             <!--    <includes><include>*.jar</include></includes>--> 
  230.             <!--</resource>--> 
  231.         </resources> 
  232.     </build> 
  233. </project> 

方式二:基于spring-boot-maven-plugin

注意

  • 这种方式打包出来的Jar基于插件提供的类加载器启动:org.springframework.boot.loader.PropertiesLauncher
  • 所有依赖包(包括systemScope),会通过插件 maven-dependency-plugin 自动复制到 lib 目录
  • 所有资源文件,会通过插件 maven-resources-plugin 自动复制到 config 目录
  • 此方式打包后,需要指定参数启动 -Dloader.path=lib路径,config路径
  • 打包完后部署需要的文件清单:(在 target/ 目录下都可以看到)
    • config/**:所有resources下的资源文件
    • lib/**:所有lib包,包括本地依赖
    • xxx.jar:应用Jar
  • 运行:java -Dloader.path=lib,config -Dspring.profiles.active=dev -jar main.jar

配置参考

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4.  
  5.     <build> 
  6.         <finalName>main</finalName> 
  7.         <plugins> 
  8.             <!--该插件的作用是指定编译配置、做预处理,如Lombok、mapstruct等框架需要预处理代码--> 
  9.             <plugin> 
  10.                 <groupId>org.apache.maven.plugins</groupId> 
  11.                 <artifactId>maven-compiler-plugin</artifactId> 
  12.                 <configuration> 
  13.                     <source>1.8</source> 
  14.                     <target>1.8</target> 
  15.                     <encoding>UTF-8</encoding> 
  16.                     <annotationProcessorPaths> 
  17.                         <path> 
  18.                             <groupId>org.mapstruct</groupId> 
  19.                             <artifactId>mapstruct-processor</artifactId> 
  20.                             <version>1.4.1.Final</version> 
  21.                         </path> 
  22.                         <path> 
  23.                             <groupId>org.projectlombok</groupId> 
  24.                             <artifactId>lombok</artifactId> 
  25.                             <version>1.18.12</version> 
  26.                         </path> 
  27.                     </annotationProcessorPaths> 
  28.                 </configuration> 
  29.             </plugin> 
  30.             <!--该插件的作用是打包spring-boot的jar包--> 
  31.             <plugin> 
  32.                 <groupId>org.springframework.boot</groupId> 
  33.                 <artifactId>spring-boot-maven-plugin</artifactId> 
  34.                 <configuration> 
  35.                     <!--入口其实会自动配置--> 
  36.                     <mainClass>org.jeecg.JeecgSystemApplication</mainClass> 
  37.                     <!--不排除的话,systemScope的依赖包会自动被此插件打包进xxx.jar\BOOT-INF\lib,和外部依赖产生冲突 --> 
  38.                     <includeSystemScope>false</includeSystemScope> 
  39.                     <skip>false</skip> 
  40.                     <!--分离Jar包--> 
  41.                     <layout>ZIP</layout> 
  42.                     <includes> 
  43.                         <include> 
  44.                             <groupId>nothing</groupId> 
  45.                             <artifactId>nothing</artifactId> 
  46.                         </include> 
  47.                     </includes> 
  48.                 </configuration> 
  49.                 <executions> 
  50.                     <execution> 
  51.                         <goals> 
  52.                             <goal>repackage</goal> 
  53.                         </goals> 
  54.                     </execution> 
  55.                 </executions> 
  56.             </plugin> 
  57.             <!-- 该插件的作用是复制依赖的jar包到指定的文件夹里 --> 
  58.             <plugin> 
  59.                 <groupId>org.apache.maven.plugins</groupId> 
  60.                 <artifactId>maven-dependency-plugin</artifactId> 
  61.                 <executions> 
  62.                     <execution> 
  63.                         <id>copy-dependencies</id> 
  64.                         <phase>package</phase> 
  65.                         <goals> 
  66.                             <goal>copy-dependencies</goal> 
  67.                         </goals> 
  68.                         <configuration> 
  69.                             <outputDirectory>${project.build.directory}/lib/</outputDirectory> 
  70.                         </configuration> 
  71.                     </execution> 
  72.                 </executions> 
  73.             </plugin> 
  74.             <!-- 该插件的作用是复制指定的文件 --> 
  75.             <plugin> 
  76.                 <groupId>org.apache.maven.plugins</groupId> 
  77.                 <artifactId>maven-resources-plugin</artifactId> 
  78.                 <executions> 
  79.                     <!-- 复制配置文件 --> 
  80.                     <execution> 
  81.                         <id>copy-resources</id> 
  82.                         <phase>package</phase> 
  83.                         <goals> 
  84.                             <goal>copy-resources</goal> 
  85.                         </goals> 
  86.                         <configuration> 
  87.                             <resources> 
  88.                                 <!--复制资源文件到外部,注意这里先不做filtering处理,防止某些静态文件损坏--> 
  89.                                 <resource> 
  90.                                     <filtering>false</filtering> 
  91.                                     <directory>src/main/resources</directory> 
  92.                                     <includes> 
  93.                                         <include>**/*</include> 
  94.                                     </includes> 
  95.                                 </resource> 
  96.                                 <!--仅针对配置文件filtering处理(占位符@@等)--> 
  97.                                 <resource> 
  98.                                     <directory>src/main/resources</directory> 
  99.                                     <filtering>true</filtering> 
  100.                                     <includes> 
  101.                                         <include>*.xml</include> 
  102.                                         <include>*.yml</include> 
  103.                                         <include>*.properties</include> 
  104.                                     </includes> 
  105.                                 </resource> 
  106.                             </resources> 
  107.                             <outputDirectory>${project.build.directory}/config</outputDirectory> 
  108.                         </configuration> 
  109.                     </execution> 
  110.                 </executions> 
  111.             </plugin> 
  112.         </plugins> 
  113.         <resources> 
  114.             <!--打包java路径下的静态文件--> 
  115.             <resource> 
  116.                 <directory>src/main/java</directory> 
  117.                 <filtering>false</filtering> 
  118.                 <includes> 
  119.                     <include>**/*.xml</include> 
  120.                     <include>**/*.json</include> 
  121.                     <include>**/*.ftl</include> 
  122.                 </includes> 
  123.             </resource> 
  124.             <!--注: 为了能在IDEA中跑起来,需要将所有yml配置文件打进jar包,filtering必须开启(处理占位符等操作)--> 
  125.             <resource> 
  126.                 <directory>src/main/resources</directory> 
  127.                 <filtering>true</filtering> 
  128.                 <includes> 
  129.                     <include>*.yml</include> 
  130.   <include>*.txt</include> 
  131.                 </includes> 
  132.             </resource> 
  133.         </resources> 
  134.     </build> 
  135. </project> 

 

相关文章

站点信息