落地实践之基于MAVEN的BUILD插件打包应用程序

2023年 10月 1日 26.2k 0

日常构建的应用程序在服务器部署时需要将所依赖的jar打包放在一起,方便部署。本文主要使用maven的build和assembly生成可直接部署的打包程序(zip格式)。

BUILD插件介绍

maven-surefire-plugin

Surefire Plugin是Maven的一个插件,用于执行Java单元测试。它提供了一种方便的方式来运行测试,并生成测试报告。
Surefire Plugin主要有以下特点和功能:

  • 自动发现测试:Surefire Plugin可以自动发现项目中的测试类。默认情况下,它会查找以Test结尾的类,并执行其中的测试方法。
  • 多种测试框架支持:Surefire Plugin支持多种测试框架,包括JUnit、TestNG和其他一些常见的测试框架。你可以根据项目需求选择适合的测试框架。
  • 并行执行测试:Surefire Plugin支持并行执行测试,以加快测试的执行速度。你可以配置插件来指定并行执行的线程数。
  • 测试报告生成:Surefire Plugin会生成详细的测试报告,包括测试结果、测试覆盖率等信息。它支持多种报告格式,如文本、XML和HTML。
  • 跳过测试:Surefire Plugin允许你在构建过程中跳过测试阶段,以节省时间。这在某些情况下可能很有用,例如在快速构建和部署时。
  • 使用举例如下:

    
      
        
          org.apache.maven.plugins
          maven-surefire-plugin
          3.0.0-M5
          
            
            
              **/*Test.java
            
            
            ${project.build.directory}/surefire-reports
            
            plain
          
        
      
    
    

    maven-dependency-plugin

    Maven Dependency Plugin是Maven的一个插件,用于管理和操作项目的依赖项。它提供了一系列功能,可以帮助你分析、解决依赖冲突、复制依赖项等。

    以下是Maven Dependency Plugin的一些常见功能:

  • 依赖分析:Dependency Plugin允许你分析项目的依赖关系,包括依赖树、依赖冲突等。你可以使用dependency:tree目标来生成依赖树,并查看项目中所有依赖项的层级关系。
  • 依赖复制:Dependency Plugin可以帮助你将依赖项复制到指定的目录。你可以使用dependency:copy目标来指定要复制的依赖项和目标目录,以便将依赖项用于其他用途,如打包、部署等。
  • 依赖解析:Dependency Plugin可以解析项目的依赖关系,并生成有关依赖项的详细信息。你可以使用dependency:resolve目标来解析依赖项,并输出有关每个依赖项的信息,如版本、文件路径等。
  • 依赖过滤:Dependency Plugin允许你根据条件过滤依赖项。你可以使用dependency:copy-dependencies目标来复制依赖项,并根据不同的过滤器配置来选择性地复制特定的依赖项。
  • 依赖报告:Dependency Plugin可以生成关于项目依赖项的报告。你可以使用dependency:analyze目标来生成依赖报告,其中包括未使用的依赖项、潜在的依赖冲突等。
  • 使用举例如下:

    
      
        
          org.apache.maven.plugins
          maven-dependency-plugin
          3.1.2
          
            
              copy-dependencies
              package
              
                copy-dependencies
              
              
                
                ${project.build.directory}/lib
              
            
          
        
      
    
    

    maven-jar-plugin

    Maven Jar Plugin是Maven的一个插件,用于创建可执行的JAR文件。它允许你将项目的编译输出打包为一个JAR文件,并可以配置JAR文件的属性、依赖项等。

    常见功能如下:

  • 打包为JAR文件:Jar Plugin可以将项目的编译输出打包为一个JAR文件。默认情况下,它会将编译后的类文件和资源文件打包到JAR文件中。
  • 配置JAR属性:Jar Plugin允许你配置JAR文件的属性,如主类、清单文件等。你可以指定一个主类,使得生成的JAR文件可以直接运行。
  • 包含依赖项:Jar Plugin可以将项目的依赖项打包到生成的JAR文件中。这样,你可以创建一个自包含的JAR文件,无需依赖外部的库文件。
  • 排除文件:Jar Plugin允许你排除某些文件或目录在打包过程中。你可以通过配置来指定要排除的文件或目录的匹配模式。
  • 生成源码JAR文件:除了生成编译输出的JAR文件,Jar Plugin还可以生成包含项目源代码的JAR文件。这对于共享和发布源代码非常有用。
  • 举例:

    
      
        
          org.apache.maven.plugins
          maven-jar-plugin
          3.2.2
          
            
            
              
                com.example.Main
              
            
          
        
      
    
    

    maven-assembly-plugin

    Maven Assembly Plugin是Maven的一个插件,用于创建自定义的发布包。它提供了一种灵活的方式来组装和打包项目的构建产物,包括生成zip、tar、jar等格式的归档文件。

    Maven Assembly Plugin的主要功能和特点如下:

  • 自定义装配描述符:Assembly Plugin使用装配描述符(Assembly Descriptor)来定义如何组装和打包项目的构建产物。装配描述符是一个XML文件,它指定了哪些文件和目录应该包含在最终的发布包中。
  • 多种归档格式支持:Assembly Plugin支持生成多种归档格式的发布包,如zip、tar、jar等。你可以根据项目的需求选择适合的归档格式。
  • 多个装配描述符:Assembly Plugin允许你定义多个装配描述符,并在构建过程中选择使用哪个描述符。这使得你可以根据需要创建不同的发布包配置。
  • 文件过滤和重命名:Assembly Plugin支持文件过滤和重命名功能。你可以使用过滤器来处理文件内容,替换占位符等。同时,你也可以重命名文件,使得生成的发布包中的文件名符合预期。
  • 拷贝、移动和压缩文件:Assembly Plugin允许你在构建过程中拷贝、移动和压缩文件。这使得你可以控制项目构建过程中的文件操作,例如将某些文件从一个位置复制到另一个位置,或将一组文件压缩成一个归档文件。
  • 使用举例如下:

    
      
        
          org.apache.maven.plugins
          maven-assembly-plugin
          3.3.0
          
            
            
              src/main/assembly/assembly.xml
            
            
            
              zip
            
            
            ${project.build.directory}/dist
          
          
            
              make-assembly
              package
              
                single
              
            
          
        
      
    
    

    maven-antrun-plugin

    Maven Antrun Plugin是Maven的一个插件,用于在构建过程中执行Ant任务。它允许你使用Ant的功能来扩展和定制项目的构建过程。

    Maven Antrun Plugin的主要功能和特点如下:

  • 执行Ant任务:Antrun Plugin可以执行Ant任务,包括编译、拷贝文件、运行脚本等。你可以使用Ant的强大功能来完成各种构建任务。
  • 与Maven生命周期集成:Antrun Plugin可以与Maven的生命周期集成,通过配置插件的执行阶段和目标,可以在构建过程的不同阶段执行Ant任务。
  • 强大的构建定制能力:Antrun Plugin提供了丰富的配置选项,允许你定制构建过程中的各个环节。你可以指定要执行的Ant任务、任务的参数、目标、属性等。
  • Maven和Ant的无缝集成:Antrun Plugin与Maven和Ant之间具有良好的集成性。你可以在Maven项目中使用Antrun Plugin来利用Ant的特性,同时仍然能够受益于Maven的依赖管理和构建约定等。
  • 可扩展性:Antrun Plugin支持扩展,你可以编写自己的Ant任务,并在插件配置中引用这些任务。这使得你可以根据需要定制和扩展构建过程。
  • 使用举例:

    
      
        
          org.apache.maven.plugins
          maven-antrun-plugin
          3.0.0
          
            
              run-ant-task
              compile
              
                run
              
              
                
                
                  
                  
                
              
            
          
        
      
    
    

    maven-deploy-plugin

    Maven Deploy Plugin是Maven的一个插件,用于将构建产物(例如JAR、WAR或其他类型的文件)部署到Maven仓库或远程仓库。它提供了一种方便的方式来发布和共享你的构建产物,以便其他开发人员或项目可以使用它们作为依赖。
    Maven Deploy Plugin的主要功能和特点如下:

  • 将构建产物部署到仓库:Deploy Plugin允许你将项目的构建产物部署到Maven仓库或远程仓库。这些构建产物可以是JAR、WAR、POM等文件。部署到仓库后,其他开发人员或项目可以通过引用它们来使用你的构建产物。
  • 发布SNAPSHOT和Release版本:Deploy Plugin支持发布两种类型的版本:SNAPSHOT和Release。SNAPSHOT版本表示开发中的版本,通常用于快照构建。Release版本表示稳定的、可发布的版本。Deploy Plugin根据版本类型的不同,将构建产物部署到不同的仓库位置。
  • 配置仓库信息:Deploy Plugin允许你在项目的pom.xml文件中配置仓库信息,包括仓库的URL、用户名、密码等。这样,在部署过程中,插件可以使用这些信息来连接到仓库并进行部署操作。
  • 上传附带的源码和文档:Deploy Plugin还支持上传附带的源码和文档。你可以将项目的源码和文档打包成JAR或其他格式,并将它们与构建产物一起部署到仓库。这样其他开发人员可以方便地获取源码和文档。
  • 使用举例:

    dynamic-data-source-demo
    dynamic-data-source-demo
    jar
    
    
        8
        8
        dynamic-data-source-demo
        dynamic-db
        1.0-SNAPSHOT
        java
    
    
    
      
        
          org.apache.maven.plugins
          maven-deploy-plugin
          3.0.0-M1
          
            
            
              my-repository
              https://example.com/repository
              my-username
              my-password
            
          
        
      
    
    

    maven-install-plugin

    Maven Install Plugin是Maven的一个插件,用于将项目构建产物(例如JAR、WAR或其他类型的文件)安装到本地仓库。它提供了一种方便的方式来在本地构建环境中使用构建产物作为依赖。

    使用举例:

    
      
        
          org.apache.maven.plugins
          maven-install-plugin
          3.0.0-M1
          
            
              install-artifact
              install
              
                install
              
              
                
                ${project.build.directory}/my-artifact.jar
                
                
                  ${project.build.directory}/my-artifact-sources.jar
                
                
                ${project.build.directory}/my-artifact-javadoc.jar
              
            
          
        
      
    
    

    相关配置

    最终配置完如下:

    pom文件

    
        
            
                src/main/resources
            
        
        
            
                org.apache.maven.plugins
                maven-surefire-plugin
                3.1.2
                
                    true
                
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                3.6.0
                
                    runtime
                
                
                    
                        copy-dependencies
                        package
                        
                            copy-dependencies
                        
                        
                            ${project.build.directory}/lib
                            false
                            false
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                3.3.0
                
                    
                        
                            ${project.name}
                            ${project.release.name}-${project.release.version}
                            ${maven.build.timestamp} UTC
                        
                    
                    
                        spring/**
                        sqlmap/**
                        *.xml
                        *.yml
                    
                
            
            
                org.apache.maven.plugins
                maven-assembly-plugin
                3.6.0
                
                    ${project.release.name}
                    false
                    
                        src/main/assembly/assembly.xml
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-antrun-plugin
                3.1.0
                
                    
                        version
                        prepare-package
                        
                            run
                        
                        
                            
                                
                                    
                                
                                
                                
                            
                        
                    
                    
                        rename
                        package
                        
                            run
                        
                        
                            
                                
                                
                                    
                                        
                                    
                                
                            
                        
                    
                
            
    
            
                org.apache.maven.plugins
                maven-deploy-plugin
                3.1.1
                
                    true
                
            
            
                org.apache.maven.plugins
                maven-install-plugin
                3.1.1
                
                    true
                
            
        
    
    

    assembly.xml文件如下:

    
    
        demo
        
            zip
        
    
        false
        
            
                src/main/bin
                bin
                0750
                0740
            
            
                target/lib
                lib/
                
                    **/**
                
                0750
                0740
            
            
                target/classes
                lib/conf
                
                    spring/**
                    sqlmap/**
                    *.xml
                    *.yml
                
                0750
                0740
            
            
                target
                
                
                    module.properties
                
                0740
            
        
        
            
                lib
                runtime
                
                    ${groupId}:${artifactId}
                
                0640
            
        
    
    

    打包效果

    target目录:
    image.png

    dynamic-data-source-demo-1.0-SNAPSHOT.zip如下:
    image.png

    image.png

    module.properties文件如下:

    appName=dynamic-data-source-demo
    version=1.0-SNAPSHOT
    container=java
    Build time=2023-10-01 13:52:34
    

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论