有时候在一个项目中为了清晰划分不同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>
相关推荐
使用Maven构建多模块项目
1.2.maven多模块项目配置1
maven搭建web项目hello world
基于maven创建web项目 基础环境 Myeclipse2013 Tomcat8.0 Jdk1.8 apache-maven-3.3.9 环境配置
maven多模块web项目,集成了springMVC+spring+maven。可以直接运行,用idea进行创建的。
maven构建多模块项目,参考:http://blog.csdn.net/xiejx618/article/details/19849035
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。 提供了一个简单的Maven多模块实例
maven多模块项目使用jetty,详细看http://blog.csdn.net/xiejx618/article/details/49936541
使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块添加为依赖项,正常情况下,我们会添加一个外部模块作为依赖。但是,当模块是一个项目的一部分,并密切相关的时候,该项目应被构造为一个多...
maven是一款java包管理软件,有点像ruby的gem,本教程使用maven创建多模块项目!
该步骤会依次生成项目的各个模块,但是生成的模块并没有 创建依赖,只是最简单的并且符合maven 要求的项目结构的模块,关于什么是 maven 的标准项目结构,可以参考 maven 官方文档,或者《 maven 权威指南》。
maven多模块项目,使用eclipse开发工具创建,有意可下载,没有解压密码
使用maven管理多模块项目并启动调试-示例代码,博文地址: https://blog.csdn.net/u010476739/article/details/87617743
maven安装 多模块项目 仓库管理器Nexus 多模块项目
Maven多模块web应用实例
详细介绍IDEA从远程仓库SVN拉去MAVEN项目.多模块的项目
Maven建立多模块项目-图文并茂--入门级别.doc
maven多模块项目,采用阿里巴巴连接池,springmvc,spring,slf4j与log4j日志,数据库为mysql,页面为jsp
Maven多模块项目编译速度慢,下面我们来学习下优化的方法。 mvn clean package -T 4C -Dmaven.test.skip=true -Dmaven.compile.fork=true -T 4C 代表本机4个CPU内核都参与编译工程, -Dmaven.test.skip=true 代表...
Springboot 多模块 maven 实例 亲测可运行 ···············