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>

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


目录
相关文章
|
7月前
|
Java Maven
13Maven - Maven小总结
13Maven - Maven小总结
24 0
|
8月前
|
存储 Java Maven
|
1天前
|
Java Maven 开发工具
Maven 特点
Maven是一个遵循统一规则、强调依赖管理的Java项目构建工具。它拥有庞大的库,支持自动更新和扩展,允许使用Java或脚本语言编写插件。通过模型驱动的构建方式,Maven能生成JAR、WAR等预定义输出,同时自动生成一致性项目站点,包括文档和开发状态报告。Maven简化了发布管理,与源码控制系统集成,确保向后兼容。子项目能继承父项目依赖,无需指定版本号,且支持并行构建,提升编译速度。改进的错误报告提供详细的wiki链接帮助解决问题。
|
1月前
|
存储 XML Java
maven
maven
287 0
|
8月前
|
Java Maven
|
9月前
|
存储 Java 程序员
Maven详解
Maven详解
232 0
|
10月前
|
Java 项目管理 Maven
|
10月前
|
Java Apache 项目管理
maven
Maven 是一个流行的 Java 项目管理工具,它可以帮助开发人员管理项目依赖、构建项目、运行测试、打包和部署项目等。Maven 的主要功能包括:
139 2
|
11月前
|
Java 应用服务中间件 Apache
零基础快速理解Maven
零基础快速理解Maven