Maven系列--"maven-war-plugin"的使用
程序员文章站
2022-05-24 20:09:30
...
【1】默认方式将工程打war包
这里不使用maven-war-plugin,使用默认配置安装工程:
安装后本地仓库会有war包:
也就是说,不使用插件的时候,默认的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>
同理,你可以在打包时过滤掉项目中的其他配置文件。
上一篇: Linux下AIO服务设计框架
推荐阅读
-
ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程
-
mysql 开发基础系列15 索引的设计和使用
-
ASP.NET使用X509Certificate2出现一系列问题的解决方法
-
Docker使用 Maven 插件构建镜像的方法
-
vue.js系列中的vue-fontawesome使用
-
面试连环炮系列(十二):说说Atomiclnteger的使用场景
-
Ideapad S12系列MSN软件无法使用麦克风的解决
-
HBase 系列(六)——HBase Java API 的基本使用
-
【maven的使用】1maven的概念与配置
-
Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate