Maven - "maven-war-plugin"的使用

简介: Maven - "maven-war-plugin"的使用

【1】默认方式将工程打war包

这里不使用maven-war-plugin,使用默认配置安装工程:


安装后本地仓库会有war包:



aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDI2MTYxNzQwMDQz.png

也就是说,不使用插件的时候,默认的maven web工程打war包和你部署在tomcat时项目一致。


【2】war包调用war包

也就是说,一个maven web工程依赖另外一个maven工程。

假设A依赖B。


这里B的pom.xml如下:

  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <!--把class打包jar作为附件-->
        <attachClasses>true</attachClasses>.
         <!--把class打包jar-->
        <archiveClasses>true</archiveClasses>
       <!-- 下面这句可以不要-->
        <classesClassifier>api</classesClassifier> 
        <!--下面意思为-->           
        <packagingExcludes>
              WEB-INF/lib/*.jar
           </packagingExcludes>
      </configuration>
     </plugin>


这样仓库中会有两个包:war 和jar


war包结构图如下:

  • 和你的webapp下目录结构一致




  • classes和lib为空(pom.xml配置文件过滤掉了)


jar包结构图如下:

  • classes和你的项目配置文件


A工程pom.xml如下:

    <dependency>
        <groupId>com.corn</groupId>
      <artifactId>corn-manager-sys</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <type>war</type> 
      </dependency>
       <dependency>
        <groupId>com.corn</groupId>
      <artifactId>corn-manager-sys</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <type>jar</type> 
      <scope>compile</scope>
    <!--如果A中没有定义该名字,那么名字为classes,替代api-->
      <classifier>api</classifier>
      </dependency>



安装后,B的api.jar(即,打包的class)会作为一个jar包存在于A的lib目录下。


B的webapp下的其他文件和A的webapp下的共存:

如果B和A同时有web.xml,那么保留A的文件。即,如果webapp下文件同名,那么保留A的文件。




需要注意的是,如果你的pom.xml文件中配置了tomcat插件,那么是不会执行安装到仓库的命令的,会直接运行。

      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <uriEncoding>UTF-8</uriEncoding>
          <port>8080</port>
          <path>/</path>
          <update>true</update>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>


【3】过滤掉B中的applicationContext.xml

如果你不想要B打包时,将项目配置文件(如applicationContext.xml)一同打入,可以在pom.xml-build中作如下配置:

    <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                <exclude>applicationContext.xml</exclude>
                </excludes>
            </resource>
        </resources>

同理,你可以在打包时过滤掉项目中的其他配置文件。


目录
相关文章
|
Java Spring 容器
解决Spring的UnsatisfiedDependencyException异常的方法
在Spring开发中,UnsatisfiedDependencyException异常意味着依赖注入失败,影响应用稳定性。该异常由Spring容器在无法满足bean依赖时抛出,常见原因包括bean定义错误、循环依赖、多个候选bean等。解决方法包括:检查bean定义和注入的正确性、解决循环依赖、确认依赖包的兼容性、使用@Qualifier或@Primary注解。通过日志、调试工具和异常对比来定位问题。持续学习Spring框架有助于更好地解决此类异常。
10431 11
|
Java 应用服务中间件 Maven
Spring Boot 项目 WEB-INF 下 jsp 无法访问,踩坑
通过maven创建springboot项目启动访问 jsp 页面出现404
1556 0
Spring Boot 项目 WEB-INF 下 jsp 无法访问,踩坑
|
网络协议 Java 应用服务中间件
在spring boot中配置HTTP/2
在spring boot中配置HTTP/2
在spring boot中配置HTTP/2
|
10月前
|
XML 人工智能 Java
优化SpringBoot程序启动速度
本文介绍了三种优化SpringBoot启动速度的方法:1) 延迟初始化Bean,通过设置`spring.main.lazy-initialization`为true,将耗时操作延后执行;2) 创建扫描索引,利用`spring-context-indexer`生成@ComponentScan的索引文件,加速类扫描过程;3) 升级至最新版SpringBoot,享受官方性能优化成果。这些方法能显著提升程序编译与启动效率。
1859 0
|
XML Java 应用服务中间件
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
803 64
SpringBoot项目打war包流程
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2467 3
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
579 1
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
Kubernetes Java 数据库
GitHub置顶神作开源!世界名著《Spring实战(第6版)》全彩文档
今天给大家带来的是:[美] 克雷格·沃斯(Craig Walls) 著,张卫滨,吴国浩 译的 《Spring实战(第6版)》,也是最新的一版,本书是关于Spring核心特性的指南,延续了前几个版本一贯的清晰风格,带领你亲自动手,逐步构建出一个以数据库作为支撑的Web应用。
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。