有时候在一个项目中为了清晰划分不同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多模块项目中,`META-INF`可能包含模块间的依赖信息或插件配置。 3. `static`:这是Web应用中存放静态资源的常见目录,比如CSS样式表、JavaScript文件、图片等。这些资源不会经过服务器端处理,而是直接发送...
项目中提到的"springMVCParent"可能是指Maven的聚合模块,这种模块通常用来组织多个子模块,便于管理和构建整个项目。在Maven中,聚合项目通过在POM.xml中定义`<modules>`标签来包含其他子模块,使得一次命令可以...
Maven多模块工程打包部署是一种常见的项目结构,在这种结构中,一个项目被分割成多个小模块,每个模块负责特定的功能。这种结构可以使项目变得更加灵活和易于维护。但是,多模块工程的打包和部署也变得更加复杂。...
Overlays是Apache Maven引入的一个概念,它允许我们在构建过程中合并多个WAR项目,每个项目可以被视为一个overlay。这些overlay项目可以共享公共的资源,同时也能覆盖父项目的特定部分,比如JSP页面、静态文件或...
虽然无法直接访问,但根据常见的 Maven overlay 实战场景,我们可以推断博主可能分享了如何设置和使用 Maven overlay 来合并多个 Web 项目的资源,如 JSP 页面、CSS、JavaScript 文件等,以便于统一主题或实现模块化...
1. **创建POM工程**:Maven的最小单位是模块,一个大型的分布式系统通常由多个相互独立又相互协作的模块组成。首先,我们需要创建一个父POM工程,它定义了共享的配置,如集团队信息、版本控制、依赖管理和插件管理。...
首先,`cas-server`是整个CAS服务器的核心,它包含了服务器的配置、Web应用程序以及相关的服务组件。由于这是一个非Maven项目,因此构建和依赖管理可能需要手动处理,例如通过引入外部jar包或使用类路径来管理依赖。...
- **聚合和继承**:Maven允许多模块项目聚合在一个父项目下,父项目可以通过继承共享配置。 对于进一步学习,推荐的书籍可能包括《Maven:The Definitive Guide》和《Practical Subversion》。理解并熟练掌握这些...
它通过POM(Project Object Model)文件来配置项目的依赖关系和构建过程。Maven拥有强大的生命周期和插件体系,可以用于编译、测试、打包、部署等多种任务,简化了项目的构建流程。 Gulp则是一个基于Node.js的流式...
Maven是一个自动化构建工具,它帮助开发者管理和构建Java项目,通过定义项目对象模型(POM)来管理项目的依赖关系、构建过程和配置信息。而SpringMVC是Spring框架的一个模块,专门用于处理Web应用的Model-View-...
- POM:包含了项目的配置信息,如构建目标、依赖、构建过程等。 - 仓库:Maven 使用本地仓库存储下载的依赖,同时也与远程中央仓库交互获取其他所需组件。 - 生命周期:Maven有三个基本生命周期,分别是clean、...
在Maven的WAR插件的帮助下,可以将多个WAR文件合并,这样Global项目就可以在不改变Warsaw项目源代码的情况下进行扩展。 例如,清单1展示了Warsaw项目的基本POM配置,定义了项目的打包类型为WAR,并列出了依赖。清单...
4. **配置项目设置**: - **配置 JDK**:进入 "File" -> "Project Structure",在 "Project" 栏目下,选择 "New...",然后选择 "JDK"。浏览并选择你电脑上的 JDK 安装路径,点击 "OK",完成 JDK 的配置。 - **...
在"Maven:Git项目"中,你可能会看到多个子目录,每个目录对应一个子项目,它们可以通过Maven的多模块构建来组织。这样的结构使得项目更易于管理和维护,同时也方便使用Git进行版本控制。 在JavaScript的上下文中,...
`Multi-Module-Maven` 是一个典型的Java项目结构,它利用Maven的多模块功能来组织大型项目。Maven是Java开发中的一个构建工具,它通过配置文件(pom.xml)来管理项目的依赖、构建过程以及打包规则。在大型项目中,将...
在使用`gwt-maven-plugin`时,开发者需要在项目的`pom.xml`文件中添加相应的配置,设定GWT模块、编译参数、目标浏览器以及其他定制选项。通过这种方式,Maven可以根据配置自动化执行构建流程,极大地提高了开发效率...
这个项目可能包含一个或多个子模块,每个子模块都可能是一个独立的战争包,用于覆盖底层的某些功能或资源,以满足特定的测试需求。 1. Maven战争(War)包:在Java Web开发中,战争包是部署到应用服务器的标准格式...
4. **Overlay**:在Apache Maven和Java Web应用中,overlay是一种构建技术,允许将一个WAR文件作为基础,然后在其上覆盖自定义配置和资源,生成一个新的WAR文件。这样可以避免直接修改基础WAR文件,保持其纯净并易于...
Maven的Assembly插件允许创建自定义的打包文件,例如将多个JAR文件合并为一个,或者生成包含所有必要文件的分发包。 #### 版本控制工具 接下来的内容将介绍CVS等版本控制系统,帮助读者了解如何有效管理源代码版本...