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

  • 相关阅读:
    没有spring如何使用注解下篇
    在没有spring框架如何使用注解上篇
    oracle11g里sqldeveloper不能打开的问题
    java代码换行
    枚举接口Enumeration
    java开发环境的搭建(上班笔记01)
    2013.12.12-2013.12.22面试
    2013.12.12-2013.12.20面试
    supervisor superlance
    Laravel 返回日期问题2021-07-23T05:56:03.000000Z
  • 原文地址:https://www.cnblogs.com/littleatp/p/9278517.html
Copyright © 2011-2022 走看看