温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Springboot基于assembly服务化实现打包的详细教程

发布时间:2020-06-23 10:48:12 来源:亿速云 阅读:732 作者:清晨 栏目:编程语言

这篇文章将为大家详细讲解有关Springboot基于assembly服务化实现打包的详细教程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

(1)首先我们编辑 assembly.xml 配置文件,在前文的基础上新增第三方依赖设置(高亮部分),实现将第三方的 jar 包添加到压缩包里的 lib 目录:

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<assembly>
  <!--
    必须写,否则打包时会有 assembly ID must be present and non-empty 错误
    这个名字最终会追加到打包的名字的末尾,如项目的名字为 hangge-test-0.0.1-SNAPSHOT,
    则最终生成的包名为 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
   -->
  <id>bin</id>
  <!-- 打包的类型,如果有N个,将会打N个类型的包 -->
  <formats>
<!--    <format>tar.gz</format>-->
    <format>zip</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>

  <!--第三方依赖设置-->
  <dependencySets>
    <dependencySet>
      <!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 -->
      <useProjectArtifact>false</useProjectArtifact>
      <outputDirectory>lib</outputDirectory>
      <unpack>false</unpack>
    </dependencySet>
  </dependencySets>

  <!--文件设置-->
  <fileSets>
    <!--
      0755->即用户具有读/写/执行权限,组用户和其它用户具有读写权限;
      0644->即用户具有读写权限,组用户和其它用户具有只读权限;
    -->
    <!-- 将src/main/assembly/bin目录下的所有文件输出到打包后的bin目录中 -->
    <fileSet>
      <directory>src/main/assembly/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <!--如果是脚本,一定要改为unix.如果是在windows上面编码,会出现dos编写问题-->
      <lineEnding>unix</lineEnding>
      <filtered>true</filtered><!-- 是否进行属性替换 -->
    </fileSet>
    <!-- 将src/main/assembly/config目录下的所有文件输出到打包后的config目录中 -->
    <fileSet>
      <directory>src/main/assembly/config</directory>
      <outputDirectory>config</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
    <!-- 将src/main/resources下配置文件打包到config目录 -->
    <fileSet>
      <directory>src/main/resources</directory>
      <outputDirectory>./config</outputDirectory>
      <includes>
        <include>**/*.xml</include>
        <include>**/*.properties</include>
        <include>**/*.yml</include>
      </includes>
      <filtered>true</filtered><!-- 是否进行属性替换 -->
    </fileSet>
    <!-- 将项目启动jar打包到lib目录中 -->
    <fileSet>
      <directory>target</directory>
      <outputDirectory>./</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
    <!-- 将项目说明文档打包到docs目录中 -->
    <!-- <fileSet>
      <directory>.</directory>
      <outputDirectory>./docs</outputDirectory>
      <includes>
        <include>*.md</include>
      </includes>
      <fileMode>0644</fileMode>
    </fileSet>-->
    <fileSet>
      <directory>docs</directory>
      <outputDirectory>./docs</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
    <fileSet>
      <directory>src/main/assembly/docs</directory>
      <outputDirectory>./docs</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
  </fileSets>
</assembly>

(2)接着编辑项目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 来打包,这个插件会将项目所有的依赖打入项目 jar 包里面。我们将其替换为 maven-jar-plugin,并进行相关设置

 <build>
    <plugins>
      <!-- 指定启动类,将依赖打成外部jar包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifest>
              <!-- 是否要把第三方jar加入到类构建路径 -->
              <addClasspath>true</addClasspath>
              <!-- 外部依赖jar包的最终位置 -->
              <!-- 因为我们将第三方jar和本项目jar放在同一个目录下,这里就使用./ -->
              <classpathPrefix>./lib</classpathPrefix>
              <!-- 项目启动类 -->
              <mainClass>com.yuehang.disneyland.DisneylandApplication</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <!--主要使用的是maven提供的assembly插件完成-->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <descriptors>
            <!--具体的配置文件-->
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <!--绑定到maven操作类型上-->
            <phase>package</phase>
            <!--运行一次-->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

然后打包出来的结构

Springboot基于assembly服务化实现打包的详细教程

运行就ok了

关于Springboot基于assembly服务化实现打包的详细教程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI