信步漫谈之Maven——自定义结构打WAR包


目录
  • 1 目标
  • 2 程序结构
  • 3 Maven 的 POM 脚本
  • 4 WAR包结构


1 目标

将项目编译完成的内容和本地的文件通过自定义的目录结构打包成war包。

2 程序结构

分为四个项目,packagewar-webapp、packagewar、demo01、demo02,其中后两者是空项目,只是为了作为jar包依赖使用。
packagewar 是 pom 项目,用于执行 maven package 打包,打包完成后将在 packagewar-webapp 的 target 目录下输出 WAR 包。
packagewar-webapp 是打 WAR 包的输出项目,包含自定义的 web 目录结构如下。

packagewar-webapp
  ∟ src
      ∟ main
          ∟ webapp
              ∟ WEB-INF
                  ∟ lib
                      ∟ debug
                      ∟ deploy
                      ∟ doc
                          ∟ README.md
                      ∟ lib
                      ∟ log
                      ∟ temp
                  ∟ web.xml
              ∟ index.jsp
  ∟ pom.xml

3 Maven 的 POM 脚本

  • demo01(demo02类似)
<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    com.alfred.maven
    maven-demo01
    1.0.0-SNAPSHOT
    
        概述:用于maven项目研究的demo
        作用:可用于配合其他项目进行操作
    

  • packagewar
<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    com.alfred.maven
    maven-packagewar
    1.0.0-SNAPSHOT
    pom
    
        概述:【Maven技术研究】打war包
        目标:作为总体编译打包的 pom 项目
    
    
        ../com.alfred.maven.demo01
        ../com.alfred.maven.demo02
        ../com.alfred.maven.packagewar-webapp
    

  • packagewar-webapp
<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    com.alfred.maven
    maven-packagewar-webapp
    1.0.0-SNAPSHOT
    war
    
        概述:【Maven技术研究】打war包
        目标:将项目编译完成的内容和本地的文件通过自定义的目录结构打包成war包
        1)demo01 -> 存放在web前台的lib/debug/deploy目录下
        2)demo02 -> 存放在web前台的lib/debug/lib目录下
        3)packagewar-webapp -> 打包的web项目
        4)保留web项目目录结构不变,集成打包成一个war包PackageWar.war
    

    
        
            com.alfred.maven
            maven-demo01
            1.0.0-SNAPSHOT
        
        
            com.alfred.maven
            maven-demo02
            1.0.0-SNAPSHOT
        
    

    
        
            
                org.apache.maven.plugins
                maven-clean-plugin
                3.0.0
                
                    
                        auto-clean
                        initialize
                        
                            clean
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                2.2
                
                    
                    
                        copy-lib-dependencies
                        
                        test-compile
                        
                            
                            copy-dependencies
                        
                        
                            
                            ${project.build.directory}/${project.artifactId}/WEB-INF/lib/debug/lib/
                            false
                            false
                            true
                            maven-demo02
                        
                    
                    
                    
                        copy-deploy-dependencies
                        test-compile
                        
                            copy-dependencies
                        
                        
                            ${project.build.directory}/${project.artifactId}/WEB-INF/lib/debug/deploy/
                            false
                            false
                            true
                            maven-demo01
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-war-plugin
                2.4
                
                    
                    ${project.build.directory}/${project.artifactId}
                    
                    PackageWar
                    
                    true
                    
                    WEB-INF/lib/*.jar
                
            
        
    

4 WAR包结构

PackageWar.war
  ∟ META-INF
	∟ WEB-INF
        ∟ classes
        ∟ lib
            ∟ debug
            ∟ deploy
                ∟ maven-demo01-1.0.0-SNAPSHOT.jar
            ∟ doc
                ∟ README.md
            ∟ lib
                ∟ maven-demo02-1.0.0-SNAPSHOT.jar
            ∟ log
            ∟ temp
        ∟ web.xml
  ∟ index.jsp