美文网首页
springboot maven 依赖和配置文件分离打包

springboot maven 依赖和配置文件分离打包

作者: Mr_Editor | 来源:发表于2020-12-19 12:53 被阅读0次

为什么要分离打包

  1. 在往服务器上传时可以节省时间,同时也可以直接修改配置文件

如果不分离打包,一个项目jar包一般在大几十M,上传时比较费劲
分离打包,可以将依赖jar和配置文件打包到不同文件夹下,项目jar中不包含依赖jar,jar包大小会变得很小,只包含源码。

pom内容


<resources>
<!-- 资源过滤-->
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
          <include>mapper/**</include>
          <include>application.yml</include>
          <include>application-dev.yml</include>
          <include>bootstrap.yml</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <!-- 分离打包开始 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
      <!-- maven打包成jar的插件 -->
      <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <!-- 把target/classes/下的文件导入到jar内 -->
          <classesDirectory>target/classes/</classesDirectory>
          <finalName>${project.artifactId}-${project.version}</finalName>
          <archive>
            <manifest>
              <!-- 指定程序入口 -->
              <mainClass>com.asiainfo.cem.CemUserJourneyApplication</mainClass>
              <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
              <useUniqueVersions>false</useUniqueVersions>
              <addClasspath>true</addClasspath>
              <!-- 服务依赖的jar包放在lib目录下 -->
              <classpathPrefix>lib/</classpathPrefix>
           <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
              <Class-Path>./resources/</Class-Path>
            </manifestEntries>
          </archive>
          <!-- jar包中不包括以下文件 -->
          <excludes>
            <exclude>mapper/**</exclude>
            <exclude>static/**</exclude>
            <exclude>templates/**</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>**/*.xml</exclude>
            <exclude>**/*.properties</exclude>
          </excludes>
          <outputDirectory>${project.build.directory}</outputDirectory>
        </configuration>
      </plugin>
      <!-- 分离打包关键代码 maven-dependency-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
<!--              <goal>copy-dependencies</goal>-->
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <type>jar</type>
              <includeTypes>jar</includeTypes>
              <!-- 存放服务依赖的jar包,存放在服务相同目录的lib文件夹下 -->
              <outputDirectory>
                ${project.build.directory}/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- 分离打包关键代码 maven-resources-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <!-- 指定resources文件 -->
              <resources>
                <resource>
                  <directory>src/main/resources</directory>
                  <!-- 分环境过滤开启 -->
                  <filtering>true</filtering>
                  <includes>
                    <include>application.yml</include>
                    <!-- 分环境配置文件不用可删除 -->
                    <include>application-dev.yml</include>
                    <include>bootstrap.yml</include>
                  </includes>
                </resource>
                <resource>
                  <directory>src/main/resources</directory>
                  <!-- 分环境过滤关闭 -->
                  <filtering>false</filtering>
                  <includes>
                    <include>*</include>
                    <include>mapper/**</include>
<!--                    <include>application.yml</include>-->
<!--                    <include>application-dev.yml</include>-->
<!--                    <include>bootstrap.yml</include>-->
                  </includes>
                </resource>
              </resources>
              <!-- 输出路径 -->
              <outputDirectory>${project.build.directory}/resources</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- 分离打包结束 -->

相关文章

网友评论

      本文标题:springboot maven 依赖和配置文件分离打包

      本文链接:https://www.haomeiwen.com/subject/mnzqnktx.html