Springboot如何基于assembly服务化实现打包

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

<?xml version="1.0" encoding="UTF-8"?>
<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>

然后打包出来的结构

运行就ok了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot将项目打包成war包的操作方法

    1 修改项目打包类型 在pom.xml里,项目打包类型将jar设置成war: <packaging>war</packaging> 2 移除内置tomcat容器 在pom.xml里设置: <dependencies> <!--web启动器依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

  • Spring boot项目打包成jar运行的二种方法

    前言 最近公司有个项目需要移植到SpringBoot框架上,项目里面又有许多第三方jar包,在linux服务器上最方便的就是用jar的方式来运行SpringBoot项目了,因此我研究了2种打jar包的方式,记录如下,供大家参考: 1.通过maven插件,将所有依赖包都打包成一个jar包,然后通过java -jar xxx.jar方式运行 由于项目中有些jar包是第三方的,maven官方仓库没有,需要使用mvn install命令打包到本地,然后将其写入到pom.xml的依赖中,maven仓库有的

  • Springboot项目与vue项目整合打包的实现方式

    我的环境 * JDK 1.8  * maven 3.6.0  * node环境 1.为什么需要前后端项目开发时分离,部署时合并? 在一些公司,部署实施人员的技术无法和互联网公司的运维团队相比,由于各种不定的环境也无法做到自动构建,容器化部署等.因此在这种情况下尽量减少部署时的服务软件需求,打出的包数量也尽量少.针对这种情况这里采用的在开发中做到前后端独立开发,打包时在后端springboot打包发布时将前端的构建输出一起打入,最后只需部署springboot的项目即可,无需再安装nginx服务器

  • 如何把vuejs打包出来的文件整合到springboot里

    这个需求不知道是不是合适,因为静态的vuejs项目,用nginx部署,听说很快. 一般有这个需求的,都是用tomcat来部署java项目,tomcat转发静态vuejs,应该不会很快. 好吧,以上都是听说...应该...实际嘛?... 废话不多讲,马上搞起. 这里第一句要说的是,目前这个方式我认为只支持#这个方式的路由,如果改成了html5的mode: 'history',应该是不支持的. 开始准备: 注意,我的springboot用的视图模板是thymeleaf,静态文件夹路径默认是resou

  • spring boot项目打包成war在tomcat运行的全步骤

    前言 使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat.现在需要将项目打包,并部署到服务器tomcat下面. 下面就让我们来一起把spring-boot项目按照平常的web项目一样发布到tomcat容器下,下面话不多说了,来一起看看详细的介绍吧 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring-boot-star

  • Springboot基于assembly的服务化打包方案及spring boot部署方式

    在使用assembly来打包springboot微服务项目前,我想说一说,目前springboot项目的几种常见的部署方式. 使用docker容器去部署,将springboot的应用构建成一个docker image,然后通过容器去启动镜像 ,这种方式在需要部署大规模的应用和应用扩展时是非常方便的,属于目前工业级的部署方案,但是需要掌握docker的生态圈技术. 使用fatjar直接部署启动,这是很多初学者或者极小规模情况下的一个简单应用部署方式. 本文主要针对第二种部署方式提供一种更加友好的打

  • Springboot jar文件如何打包zip在linux环境运行

    这篇文章主要介绍了Springboot jar文件如何打包zip在linux环境运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.添加打包配置文件 1.1 assembly.xml <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2

  • Springboot如何基于assembly服务化实现打包

    (1)首先我们编辑 assembly.xml 配置文件,在前文的基础上新增第三方依赖设置(高亮部分),实现将第三方的 jar 包添加到压缩包里的 lib 目录: <?xml version="1.0" encoding="UTF-8"?> <assembly> <!-- 必须写,否则打包时会有 assembly ID must be present and non-empty 错误 这个名字最终会追加到打包的名字的末尾,如项目的名字为

  • SpringBoot使用Maven插件进行项目打包的方法

    SpringBoot自带Tomcat,所以我们的项目可以单独部署,不需要依赖Window.Linux系统中的服务器,所以打包出来的Jar包是可以直接运行的.Windows中直接cmd命令行模式下,cd切换到jar路径中,使用java 命令运行jart包,Linux环境也是一样的命令,如下图: 现在我们开始打包,我介绍两种方式,不管那种方式首先先在项目Pom.xml文件中引入Maven插件. <build> <plugins> <!-- 设置jdk版本为1.8 --> &

  • springboot+mybatis-plus基于拦截器实现分表的示例代码

    目录 前言 一.设计思路 二.实现思路 三.代码实现 接口描述 核心组成部分 1.本地线程工具类 2.注解部分 3.拦截器实现 四.测试 后记 前言 最近在工作遇到数据量比较多的情况,单表压力比较大,crud的操作都受到影响,因为某些原因,项目上没有引入sharding-jdbc这款优秀的分表分库组件,所以打算简单写一个基于mybatis拦截器的分表实现 一.设计思路 在现有的业务场景下,主要实现的目标就是表名的替换,需要解决的问题有 如何从执行的方法中,获取对应的sql并解析获取当前执行的表名

  • 解析SpringBoot 搭建基于 MinIO 的高性能存储服务的问题

    目录 1.什么是MinIO 2.使用docker搭建minio服务 2.1.GNU/Linux和macOS 2.2.windows 3.下面开始搭建springboot环境 1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储.它与Amazon S3云存储服务兼容.使用MinIO构建用于机器学习,分析和应用程序数据工作负载的高性能基础架构. 官网地址:https://min.io/ 文档地址:https://docs.min.io/ 2.使用doc

  • springboot实现maven多模块和打包部署

    目录 创建多模块项目 依赖关系 开发工具 :idea 工程结构: 父工程father 子模块 dao (用于持久化数据跟数据库交互) 子模块 entity (实体类) 子模块 service (处理业务逻辑) 子模块 web (页面交互接收.传递数据,唯一有启动类的模块) 关系: web依赖 service.dao.entity service依赖 dao.entity dao依赖 entity entity谁都不依赖,独立的 创建多模块项目 new ------file-------proje

  • SpringBoot如何基于POI-tl和word模板导出庞大的Word文件

    目录 前言 知识准备 什么是poi-tl poi-tl的TDO模式 Template:模板 Data-model:数据 Output:输出 实现案例 Pom依赖 导出基于template的word 导出markdown为word 前言 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性.本文主要介绍通过SpringBoot集成poi-tl实现模板方式的Word导出功能. 知识准备 需要理解文件上

  • SpringBoot实现动态配置及项目打包部署上线功能

    目录 写在前面 一.动态配置文件 1.1.概述 1.2.启动方式 1.2.1.jar包启动 1.2.2.IDEA启动配置 二.项目打包 2.1.IDEA打包 2.2.Maven命令打包 三.项目部署 3.1.安装环境 3.2.项目启动 3.3.最终效果 写在前面 本文讲解的是如何使用Spring动态配置文件,实现不同环境不同配置,灵活切换配置文件:以及讲述了如何使用 Maven 打包,然后上传至Linux服务器进行部署.(PS:如果你是新手,可以跟着系列专栏的框架搭建先动手把项目搭建起来,然后在

  • springboot实现基于aop的切面日志

    本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下 通过aop的切面方式实现日志 通切面拦截所有指定包下的所有方法 @Aspect @Component @EnableAspectJAutoProxy public class LogAspect1{     Logger logger = LoggerFactory.getLogger(LogAspect.class);      /**  * 拦截切点  */     @Pointcut("e

随机推荐