现在的位置: 首页 > 综合 > 正文

使用maven整合多个web项目,多个war合并

2017年12月25日 ⁄ 综合 ⁄ 共 2669字 ⁄ 字号 评论关闭

       在项目管理的过程中,初期可能一个项目并不大,所以建立了一个独立的web项目,但随着项目的发展,业务功能越来越多,但从业务依赖的角度来说,却是可以划分为多项目的。于是需要将这个庞大的web项目拆分成一个个独立的子web项目。这样的好处是,代码按模块划分,代码独立打成war包后,可以独立部署,如果某应用访问量大的话,也可以独立出来做分布式应用。

        以上是一般项目发展的历程,而这里我想说的是,在项目建立初期,就已经预见到了未来会是多项目依赖的这种情况,那在这个阶段,可以考虑直接划分为多个模块,而在打包的过程中直接构建成为一个war包来运行:
        1、按模块划分,采用标准的svn目录结构创建多个web项目(各模块可以独立运行),一个common项目(各模块的公用模块,打成jar包)
2、为每个项目创建pom-{projectName}.xml,编写好相应的配置
3、选择其中一个项目,增加一个合并打包的配置pom-all.xml,增加如下配置:
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sharp</groupId>
  <artifactId>mvc1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>mvc1</name>
  <dependencies>
  	<dependency>
  		<groupId>com.sharp</groupId>
  		<artifactId>mvc4</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  		<type>war</type>
  		<scope>runtime</scope>
  	</dependency>
  </dependencies>
  
  <build>
	<plugins>
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<version>2.1.1</version>
			<configuration>
				<warSourceDirectory>src/main/WebContent</warSourceDirectory>
				<overlays>
					<overlay>
						<groupId>com.sharp</groupId>
						<artifactId>mvc4</artifactId>
						<excludes>
							<exclude>WEB-INF/lib/*</exclude>
							<exclude>WEB-INF/web.xml</exclude>
						</excludes>
					</overlay>
				</overlays>
			</configuration>
		</plugin>
	</plugins>
  </build>
</project>


4、举例:先运行mvn install -f pom-cms.xml
              再运行mvn package -f pom-all.xml 即可

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sharp</groupId>
  <artifactId>mvc1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>mvc1</name>
  <dependencies>
  	<dependency>
  		<groupId>com.sharp</groupId>
  		<artifactId>mvc4</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  		<type>war</type>
  		<scope>runtime</scope>
  	</dependency>
  </dependencies>
  
  <build>
	<plugins>
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<version>2.1.1</version>
			<configuration>
				<warSourceDirectory>src/main/webapp</warSourceDirectory>
				<overlays>
					<overlay>
						<groupId>com.sharp</groupId>
						<artifactId>mvc4</artifactId>
						<excludes>
							<exclude>WEB-INF/lib/*</exclude>
							<exclude>WEB-INF/web.xml</exclude>
						</excludes>
					</overlay>
				</overlays>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-maven-plugin</artifactId>
			<version>8.1.15.v20140411</version>
			<configuration>
				<scanIntervalSeconds>10</scanIntervalSeconds>
				<webAppConfig>
					<contextPath>/mvc3</contextPath>
				</webAppConfig>
			</configuration>
		</plugin>
	</plugins>
  </build>
</project>

抱歉!评论已关闭.