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内置变量

  • 相关阅读:
    C#获取根目录的方法集合
    C# 获取文件MD5值的方法
    VS2015 搭建 Asp.net core 开发环境
    【Networking】容器网络大观 && SDN 资料汇总
    【Networking】flannel,pipework,weave,udp,vxlan,ovs等资料
    【K8s】Kubernetes 最近正在看的资料
    【GoLang】go 微服务框架 && Web框架学习资料
    【Eclipse】eclipse che 协作开发
    【Kubernetes】两篇文章 搞懂 K8s 的 fannel 网络原理
    【SpringBoot】SpringBoot 入门示例
  • 原文地址:https://www.cnblogs.com/littleatp/p/9278517.html
Copyright © 2011-2022 走看看