zoukankan      html  css  js  c++  java
  • 补习系列-springboot-使用assembly进行项目打包

    目录

    springboot-maven插件

    springboot-maven插件

    repackage目标声明

    
    Requires a Maven project to be executed.
    Requires dependency resolution of artifacts in scope: compile+runtime.
    Since version: 1.1.
    Binds by default to the lifecycle phase: package.

    1. 项目打包Jar

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    如此,执行mvn package可自动生成一个独立可执行的jar文件

    2. 项目完整构建

    通常,项目发布时除了jar包,还会包含配置文件、启停脚本等,此时需要借助assembly插件完成重复打包
    构建结构

    base
        - bin
            - start.sh
            - stop.sh
        - application.properties
        - log4j.properties
        - app-0.0.1-SNAPSHOT.jar

    pom定义

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <id>bundle</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                <descriptors>
                                    <descriptor>${basedir}/src/main/build/assembly.xml</descriptor>
                                </descriptors>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    说明
    将assembly定义在spring-boot:repackage之后,这样maven在执行package阶段时会按照声明顺序处理;
    assembly.xml存放于src/main/build目录,此外用于发布的config、bin目录及文件都放到这个目录;

    assembly定义

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
        <id>bundle</id>
        <formats>
            <format>tar.gz</format>
        </formats>
        <includeBaseDirectory>false</includeBaseDirectory> <!-- disable the creation of root's distribution dir in the archive -->
        
         <fileSets>  
            <!-- config files -->
            <fileSet>  
                <directory>${basedir}/src/main/build/config</directory>  
                <excludes></excludes>  
                 <includes>
                    <include>application*.properties</include>
                    <include>log4j.properties</include> 
                </includes>
                <fileMode>0644</fileMode>
                <outputDirectory>/</outputDirectory>  
            </fileSet>  
            <!-- scripts -->
            <fileSet>
                <directory>${basedir}/src/main/build/bin</directory>
                <includes>
                    <include>*.sh</include>
                </includes>
                <fileMode>0755</fileMode>
                <outputDirectory>/</outputDirectory>
            </fileSet>
            <!-- executable jar -->
             <fileSet>
                <directory>${project.build.directory}</directory>
                <outputDirectory>/</outputDirectory>
                <includes>
                    <include>${project.artifactId}-${project.version}.jar</include>
                </includes>
                <fileMode>0755</fileMode>
            </fileSet>
        </fileSets>  
        
    </assembly>

    关于内置变量

    3. 本地包依赖

    • 定义scope=system依赖
    <dependency>
       <groupId>com.xxx.component</groupId>
       <artifactId>mongoop</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <scope>system</scope>
       <systemPath>D:workmaven
    epom2xxx.jar</systemPath>
      </dependency>
    • 声明springboot打包时包含system范围的依赖
    <build>
      <plugins>
       <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
         <includeSystemScope>true</includeSystemScope>
        </configuration>
        <executions>
         <execution>
          <goals>
           <goal>repackage</goal>
          </goals>
         </execution>
        </executions>
       </plugin>
      </plugins>
     </build>

    参考文档

    springboot文档-maven插件使用
    关于springboot-repackage
    maven内置变量

    作者:zale

  • 相关阅读:
    常用模块介绍
    正则表达式/re模块
    模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范
    迭代器/for循环本质/生成器/常用内置方法
    函数递归/二分法/列表,字典生成式/三元表达式/匿名函数/内置函数
    闭包函数/装饰器
    函数对象/函数的嵌套定义与调用/名称空间和作用域
    初识函数
    文件处理/光标移动/实时检测
    7-5字符编码和文件处理
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165612.html
Copyright © 2011-2022 走看看