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


        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    

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

2. 项目完整构建

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

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

pom定义


        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-assembly-plugin
                2.4
                
                    
                        bundle
                        package
                        
                            single
                        
                        
                            
                                ${basedir}/src/main/build/assembly.xml
                            
                        
                    
                
            
        
    

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

assembly定义


    bundle
    
        tar.gz
    
    false 

       
        
          
            ${basedir}/src/main/build/config  
              
             
                application*.properties
                log4j.properties 
            
            0644
            /  
          
        
        
            ${basedir}/src/main/build/bin
            
                *.sh
            
            0755
            /
        
        
         
            ${project.build.directory}
            /
            
                ${project.artifactId}-${project.version}.jar
            
            0755
        
      


关于内置变量

3. 本地包依赖

  • 定义scope=system依赖

   com.xxx.component
   mongoop
   0.0.1-SNAPSHOT
   system
   D:\work\maven\repo\m2\xxx.jar
  
  • 声明springboot打包时包含system范围的依赖

  
   
    org.springframework.boot
    spring-boot-maven-plugin
    
     true
    
    
     
      
       repackage
      
     
    
   
  
 

参考文档

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

你可能感兴趣的:(springboot-使用assembly进行项目打包)