`
zhangwei_david
  • 浏览: 476102 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Maven 多web模块项目配置(多war合并)

 
阅读更多

       有时候在一个项目中为了清晰划分不同web模块需要配置多个web module 。如:

 

<modules>
		<!-- 主web应用 -->
		<module>cathy-web</module>
		<module>cathy-biz</module>
		<module>cathy-common-util</module>
		<module>cathy-common-intergration</module>
		<module>cathy-common-facade</module>
		<module>cathy-common-model</module>
		<module>cathy-common-dal</module>
		<module>cathy-core-service</module>
		<!-- 子web应用 -->
		<module>cathy-backend</module>
	</modules>

 配置看起来很 简单,在打包的时候需要将这两个web打成一个war包又该如何配置呢?此时就需要使用到maven-war-plugin这个插件,当然这个插件的功能不仅仅是将多个war包合并成一个war.

  在 cathy-web 这个module的pom 中的dependencies进行如下配置

 

<dependency>
			<groupId>com.david.demo</groupId>
			<artifactId>cathy-backend</artifactId>
			<type>war</type>
		</dependency>

  在plugins增加如下配置

<!-- 合并多个war -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
					<failOnMissingWebXml>false</failOnMissingWebXml>
					<overlays>
						<overlay>
							<groupId>com.david.demo</groupId>
							<artifactId>cathy-backend</artifactId>
						</overlay>
					</overlays>
				</configuration>
			</plugin>
		

   在主pom中的依赖中增加

<dependency>
				<groupId>com.david.demo</groupId>
				<artifactId>cathy-backend</artifactId>
				<version>0.0.1-SNAPSHOT</version>
				<type>war</type>
				<scope>runtime</scope>
			</dependency>

 

  子web module 的结构是“



 

在项目的主目录下执行 mvn -Dmaven.test.skip=true后


 

可以看到子web module中的文件夹已经合并到主web中了,注意如果同名的文件夹和合并的,同时不合并空文件夹

 

   在实际的项目中配置文件在不同的环境中配置是不同的,那么如何根据环境去参数化配置呢?

 

在主web的pom中进行如下配置

<profiles>
		<profile>
			<id>dev</id>
			<build>
				<filters>
					<filter>
						src/main/resources/META-INF/config-dev.properties
					</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>test</id>
			<build>
				<filters>
					<filter>
						src/main/resources/META-INF/config-test.properties
					</filter>
				</filters>
			</build>
		</profile>
	</profiles>

 

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
					<failOnMissingWebXml>false</failOnMissingWebXml>
					<webResources>
						<resource>
							<directory>
								src/main/resources/config
							</directory>
							<filtering>true</filtering>
							<targetPath>WEB-INF/classes</targetPath>
						</resource>
					</webResources>
					<overlays>
						<overlay>
							<groupId>com.david.demo</groupId>
							<artifactId>cathy-backend</artifactId>
						</overlay>
					</overlays>
				</configuration>
			</plugin>

 

  config目录中log4j.xml的配置文件中有:

	<appender name="DEFAULT-APPENDER"
		class="com.david.common.log4j.DailyRollingFileAppender">
		<param name="file" value="P:/${host_name}/common-default.log" />
		<param name="append" value="true" />
		<param name="encoding" value="GBK" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%d [%X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n" />
		</layout>
	</appender>

 

 使用 mvn  package -P test -Dmaven.test.skip=true 打包的结果是:

<!-- ===== [公共Appender] ===== -->
	<!-- [公共Appender] 默认 -->
	<appender name="DEFAULT-APPENDER"
		class="com.david.common.log4j.DailyRollingFileAppender">
		<param name="file" value="P:/test/common-default.log" />
		<param name="append" value="true" />
		<param name="encoding" value="GBK" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%d [%X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n" />
		</layout>
	</appender>

 

 


 

 

  • 大小: 25.3 KB
  • 大小: 31.2 KB
2
1
分享到:
评论

相关推荐

    maven多模块整合

    在Maven多模块项目中,`META-INF`可能包含模块间的依赖信息或插件配置。 3. `static`:这是Web应用中存放静态资源的常见目录,比如CSS样式表、JavaScript文件、图片等。这些资源不会经过服务器端处理,而是直接发送...

    maven-聚合项目-springMVC

    项目中提到的"springMVCParent"可能是指Maven的聚合模块,这种模块通常用来组织多个子模块,便于管理和构建整个项目。在Maven中,聚合项目通过在POM.xml中定义`&lt;modules&gt;`标签来包含其他子模块,使得一次命令可以...

    maven多模块工程打包部署的方法步骤

    Maven多模块工程打包部署是一种常见的项目结构,在这种结构中,一个项目被分割成多个小模块,每个模块负责特定的功能。这种结构可以使项目变得更加灵活和易于维护。但是,多模块工程的打包和部署也变得更加复杂。...

    overlays合并多个war -

    Overlays是Apache Maven引入的一个概念,它允许我们在构建过程中合并多个WAR项目,每个项目可以被视为一个overlay。这些overlay项目可以共享公共的资源,同时也能覆盖父项目的特定部分,比如JSP页面、静态文件或...

    maven笔记:maven-overlay-实战笔记

    虽然无法直接访问,但根据常见的 Maven overlay 实战场景,我们可以推断博主可能分享了如何设置和使用 Maven overlay 来合并多个 Web 项目的资源,如 JSP 页面、CSS、JavaScript 文件等,以便于统一主题或实现模块化...

    Maven构建的分布式demo

    1. **创建POM工程**:Maven的最小单位是模块,一个大型的分布式系统通常由多个相互独立又相互协作的模块组成。首先,我们需要创建一个父POM工程,它定义了共享的配置,如集团队信息、版本控制、依赖管理和插件管理。...

    cas-server非maven项目源码

    首先,`cas-server`是整个CAS服务器的核心,它包含了服务器的配置、Web应用程序以及相关的服务组件。由于这是一个非Maven项目,因此构建和依赖管理可能需要手动处理,例如通过引入外部jar包或使用类路径来管理依赖。...

    版本管理及项目构建和maven的介绍使用

    - **聚合和继承**:Maven允许多模块项目聚合在一个父项目下,父项目可以通过继承共享配置。 对于进一步学习,推荐的书籍可能包括《Maven:The Definitive Guide》和《Practical Subversion》。理解并熟练掌握这些...

    j2ee maven 结合gulp构建工具构建 war 自动刷新浏览器缓存

    它通过POM(Project Object Model)文件来配置项目的依赖关系和构建过程。Maven拥有强大的生命周期和插件体系,可以用于编译、测试、打包、部署等多种任务,简化了项目的构建流程。 Gulp则是一个基于Node.js的流式...

    基于maven springmvc管理系统(整合版)。

    Maven是一个自动化构建工具,它帮助开发者管理和构建Java项目,通过定义项目对象模型(POM)来管理项目的依赖关系、构建过程和配置信息。而SpringMVC是Spring框架的一个模块,专门用于处理Web应用的Model-View-...

    maven ,git ,node ,mysql 打包下载

    - POM:包含了项目的配置信息,如构建目标、依赖、构建过程等。 - 仓库:Maven 使用本地仓库存储下载的依赖,同时也与远程中央仓库交互获取其他所需组件。 - 生命周期:Maven有三个基本生命周期,分别是clean、...

    创建并扩展Apache_Wicket_Web应用.doc

    在Maven的WAR插件的帮助下,可以将多个WAR文件合并,这样Global项目就可以在不改变Warsaw项目源代码的情况下进行扩展。 例如,清单1展示了Warsaw项目的基本POM配置,定义了项目的打包类型为WAR,并列出了依赖。清单...

    idea配置与发布JavaEE项目.pdf

    4. **配置项目设置**: - **配置 JDK**:进入 "File" -&gt; "Project Structure",在 "Project" 栏目下,选择 "New...",然后选择 "JDK"。浏览并选择你电脑上的 JDK 安装路径,点击 "OK",完成 JDK 的配置。 - **...

    Maven:Git项目

    在"Maven:Git项目"中,你可能会看到多个子目录,每个目录对应一个子项目,它们可以通过Maven的多模块构建来组织。这样的结构使得项目更易于管理和维护,同时也方便使用Git进行版本控制。 在JavaScript的上下文中,...

    Multi-Module-Maven

    `Multi-Module-Maven` 是一个典型的Java项目结构,它利用Maven的多模块功能来组织大型项目。Maven是Java开发中的一个构建工具,它通过配置文件(pom.xml)来管理项目的依赖、构建过程以及打包规则。在大型项目中,将...

    gwt-maven-plugin

    在使用`gwt-maven-plugin`时,开发者需要在项目的`pom.xml`文件中添加相应的配置,设定GWT模块、编译参数、目标浏览器以及其他定制选项。通过这种方式,Maven可以根据配置自动化执行构建流程,极大地提高了开发效率...

    overlayTest:Maven 战争覆盖底层的测试项目

    这个项目可能包含一个或多个子模块,每个子模块都可能是一个独立的战争包,用于覆盖底层的某些功能或资源,以满足特定的测试需求。 1. Maven战争(War)包:在Java Web开发中,战争包是部署到应用服务器的标准格式...

    cas-overlay-template:Apereo CAS WAR重叠模板

    4. **Overlay**:在Apache Maven和Java Web应用中,overlay是一种构建技术,允许将一个WAR文件作为基础,然后在其上覆盖自定义配置和资源,生成一个新的WAR文件。这样可以避免直接修改基础WAR文件,保持其纯净并易于...

    Java Power Tools

    Maven的Assembly插件允许创建自定义的打包文件,例如将多个JAR文件合并为一个,或者生成包含所有必要文件的分发包。 #### 版本控制工具 接下来的内容将介绍CVS等版本控制系统,帮助读者了解如何有效管理源代码版本...

Global site tag (gtag.js) - Google Analytics