欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-24 20:09:30
...

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

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

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


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

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

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

也就是说,不使用插件的时候,默认的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

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


war包结构图如下:

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

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


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

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


jar包结构图如下:

  • classes和你的项目配置文件

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


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目录下。

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


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

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

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


需要注意的是,如果你的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>

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

相关标签: maven war