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 Kafka
关于kafka消费者超时配置
关于kafka消费者超时配置
2082 2
|
5月前
|
安全 Java API
一文吃透:若依框架静态资源防盗链从原理到代码
若依(RuoYi)框架的防盗链功能实现方式,我会从核心原理、代码实现、配置方式、关键细节四个维度拆解,兼顾原理理解和实操落地,适配若依单体版(RuoYi-Vue)和微服务版(RuoYi-Cloud)的通用逻辑
350 3
|
XML 人工智能 Java
优化SpringBoot程序启动速度
本文介绍了三种优化SpringBoot启动速度的方法:1) 延迟初始化Bean,通过设置`spring.main.lazy-initialization`为true,将耗时操作延后执行;2) 创建扫描索引,利用`spring-context-indexer`生成@ComponentScan的索引文件,加速类扫描过程;3) 升级至最新版SpringBoot,享受官方性能优化成果。这些方法能显著提升程序编译与启动效率。
2201 0
|
前端开发 Java Nacos
Nacos 配置中心(读取配置文件) | 学习笔记
快速学习 Nacos 配置中心(读取配置文件)
Nacos 配置中心(读取配置文件) | 学习笔记
|
Java 应用服务中间件 Maven
SpringBoot项目打包成war包
通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。
1839 8
|
Java 中间件 调度
SpringBoot整合XXL-JOB【03】- 执行器的使用
本文介绍了如何将调度中心与项目结合,通过配置“执行器”实现定时任务控制。首先新建SpringBoot项目并引入依赖,接着配置xxl-job相关参数,如调度中心地址、执行器名称等。然后通过Java代码将执行器注册为Spring Bean,并声明测试方法使用`@XxlJob`注解。最后,在调度中心配置并启动定时任务,验证任务是否按预期执行。通过这些步骤,读者可以掌握Xxl-Job的基本使用,专注于业务逻辑的编写而无需关心定时器本身的实现。
5283 10
SpringBoot整合XXL-JOB【03】-  执行器的使用
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2896 3
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
Java Maven Spring
SpringBoot 系列之 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resource
这篇文章描述了在使用Maven构建Spring Boot项目时遇到的`maven-resources-plugin`插件版本问题导致的编译失败,并提供了通过修改插件版本至3.1.0来解决这个问题的方法。
SpringBoot 系列之 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resource
|
SQL Java 数据库连接
成功解决:was not registered for synchronization because synchronization is not active
这篇文章是关于解决Mybatis在同步过程中出现"was not registered for synchronization because synchronization is not active"错误的技术博客。
成功解决:was not registered for synchronization because synchronization is not active