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

【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>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流烟默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值