`
wangmingyue
  • 浏览: 44896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven 多web项目合并war

 
阅读更多

此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过。

最近一直在搞fixflow5.2的升级工作,以前只知道maven好用,但是一直没机会接触,这次由于工作需要,终于有空看下maven了。

由于以前项目使用linksource来管理项目结构,用tomcat来调试,习惯了,所以虽然决定用maven,但是还是习惯用tomcat来调试。所以就一直在网上搜maven tomcat 多web,发现都是一些转载的文章,而且都需要这插件,那插件的,感觉新手无从下手,不过几天研究下来,觉得其实网上的方案都不是我想要的,其实有更简单的,下面我就来简单说下fixflow用maven来构建多web的过程。

关于fixflow的maven结构介绍,可以参考我的另一篇博客http://yang-ch.iteye.com/blog/2032905,这也是我们这篇文章的目标。

这篇文章,我准备分3个部分来介绍:

  1. maven多模块项目。
  2. maven多web合并项目。
  3. maven多web合并项目在eclipse+tomcat环境下部署和调试。

maven多模块项目

maven多模块项目需要一个父工程来聚合各个子模块,不过其实就是需要一个父pom.xml,主要作用是声明子模块,代码如下:

Xml代码收藏代码
  1. <modules>
  2. <module>modules/fixflow-core</module>
  3. <module>modules/fixflow-expand</module>
  4. <module>modules/fixflow-common-api</module>
  5. <module>modules/fixflow-common-servlet</module>
  6. <module>modules/fixflow-manage-servlet</module>
  7. <module>modules/fixflow-webapp-common</module>
  8. <module>modules/fixflow-webapp-taskcenter</module>
  9. <module>modules/fixflow-webapp-managecenter</module>
  10. <module>modules/fixflow-webapp-explorer</module>
  11. <module>modules/fixflow-converter</module>
  12. <module>modules/fixflow-webapp-editor</module>
  13. </modules>

然后在子模块中,声明父工程,子模块中代码如下:

Xml代码收藏代码
  1. <parent>
  2. <groupId>com.founder.fix.fixflow</groupId>
  3. <artifactId>fixflow-root</artifactId>
  4. <version>5.0</version>
  5. <relativePath>../..</relativePath>
  6. </parent>

关于多模块的文章,网上有很多,也都很详细,这里不再多说。

maven多web合并项目

多web项目合并,主要是我在网上找到的资料都不是我最终想要的效果,所以这里就介绍下我最终使用的方案,网上有很多方案都是介绍用caro插件,我到现在也不明白为什么要使用这个插件。

maven的多web模块maven-war-plugin插件的overlays属性来处理,最终主web项目pom.xml代码如下

Xml代码收藏代码
  1. <build>
  2. <finalName>bpmcenter</finalName>
  3. <plugins>
  4. <!--合并多个war-->
  5. <plugin>
  6. <groupId>org.apache.maven.plugins</groupId>
  7. <artifactId>maven-war-plugin</artifactId>
  8. <configuration>
  9. <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
  10. <overlays>
  11. <overlay>
  12. <groupId>com.founder.fix.fixflow</groupId>
  13. <artifactId>fixflow-webapp-taskcenter</artifactId>
  14. </overlay>
  15. </overlays>
  16. </configuration>
  17. </plugin>
  18. </plugins>
  19. </build>

这里使用到了maven-war-plugin,用overlay属性已经足够将多web合并了,只是用的过程中需要注意以下几点:

  1. 被合并的子web项目packaging属性必须是war
  2. 被合并的子web项目,必须在主项目中添加依赖关系。
  3. 被合并的子web项目中,如果没有web.xml,则需要在pom.xml中声明
    Xml代码收藏代码
    1. <build>
    2. <finalName>fixflow-webapp-editor</finalName>
    3. <plugins>
    4. <plugin>
    5. <groupId>org.apache.maven.plugins</groupId>
    6. <artifactId>maven-war-plugin</artifactId>
    7. <configuration>
    8. <failOnMissingWebXml>false</failOnMissingWebXml>
    9. </configuration>
    10. </plugin>
    11. </plugins>
    12. </build>

做完以上几点,多web项目合并就基本上做完了,运行mvn install就会发现打出的war包中已经存在了其他子模块的项目。

多web项目在eclipse+tomcat环境下部署调试

在eclipse里面使用,其实更简单,只是网上的说法太复杂了而已,对于习惯了tomcat开发的用户来说。

对于maven项目,一个环境到另一个环境应该只有pom.xml文件和src文件夹就够了,其他都是用户根据自己的环境来做的。

  1. 打开eclipse,修改本地maven仓库地址,导入maven项目,等待构建结束。
  2. 创建server,打开window-prefrences-server-runTime Environment-new ....选择tomcat路径,jdk信息,这一步和原来完全一样。
  3. 打开server视图,new server,这里选中刚才创建的tomcat,点击next,这步只需要主web项目添加进来即可。
  4. 双击创建的server,选择将项目发布到tomcat的webapps目录下,点击pushlish,完成。

再去tomcat目录,发现已经将合并后的web发布到对应目录下了。引用的其他Java项目已经被打包成jar发布到lib下了,不过你可以打个断点试试,依然可以调试,修改一段代码,发现热部署也是可以的,这样就和原来的开发习惯完全一样了。

细心的用户会发现,其实这完全和我们原来的构建,部署方式完全一样,是的,maven没有那么复杂,m2eclipse maven plugin已经帮我们做好了太多的事情,maven只会让我们项目之间的迁移更方便,更简洁,这也是我喜欢上maven的重要原因。

我是一个绝对的maven新手,上面的文章用的也只是maven的皮毛而已,maven更多的构建功能还需要深入去研究,上面文章只是想告诉那些想尝试maven的新手,其实maven不但对代码管理带来了很大的方便,而且完全可以不改变我们原有的开发习惯。所以,尽情的拥抱maven吧!

分享到:
评论

相关推荐

    maven-聚合项目-springMVC

    【maven-聚合项目-springMVC】是一个基于Maven构建的Java Web项目,它采用了Spring MVC框架作为控制器层的核心技术。在这个项目中,我们不难看出开发者专注于演示Maven的聚合功能以及Spring MVC在应用开发中的作用,...

    maven多模块整合

    结合以上信息,我们可以看出这是一个使用Maven进行多模块管理,采用Freemarker模板技术处理视图,利用Redis作为缓存系统的Java Web项目。项目结构遵循标准的Java Web规范,且包含必要的静态资源。这样的架构设计既...

    overlays合并多个war -

    4. **执行构建**:运行`mvn package`命令,Maven会自动处理overlay,生成一个包含所有资源的合并WAR文件。 ### 注意事项 - 谨慎处理依赖关系,避免版本冲突。 - 确保每个overlay只包含需要修改或添加的部分,避免...

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

    在描述中提到的博客链接,虽然无法直接访问,但根据常见的 Maven overlay 实战场景,我们可以推断博主可能分享了如何设置和使用 Maven overlay 来合并多个 Web 项目的资源,如 JSP 页面、CSS、JavaScript 文件等,以...

    Maven的简单使用

    创建完Web项目后,可以在服务器上执行项目,通常需要将生成的WAR包部署到Tomcat服务器的`webapps`目录下。 ### 搭建Maven的私有服务器 #### 中央仓库注意事项 中央仓库虽然资源丰富,但在某些情况下可能存在访问...

    Maven构建的分布式demo

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

    cas-server非maven项目源码

    1. 解压所有rar文件,将它们的类文件和资源文件合并到一个项目目录下。 2. 配置CAS服务器的主配置文件,比如`cas-server.xml`,设置服务器端点、服务验证策略、票证生成器等。 3. 配置`cas.properties`,添加数据库...

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

    在J2EE环境中,应用通常被打包成WAR(Web Application Archive)文件,这是一个标准的Java Web应用归档格式,包含了运行在Web服务器上的所有资源,如HTML、CSS、JavaScript、Servlets、JSP等。 Maven是Apache组织...

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

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

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

    - **经典案例**:Ant常用于构建Java Web应用,如打包WAR文件,执行JUnit测试。 3. Maven: - **简介**:Maven是另一种流行的Java项目构建工具,它引入了标准化的项目结构和依赖管理。 - **环境配置**:安装Maven...

    maven打包使用yui压缩css和js文件

    在实际项目中,可能还需要结合其他的前端构建工具,如Gulp、Grunt或Webpack,这些工具可以提供更灵活的配置和更丰富的功能,例如自动编译Sass/LESS文件、合并多个文件为一个、图片压缩等。不过,对于简单项目或只...

    Java项目自己用JSP写的一个web项目

    总的来说,这个Java项目展示了Web开发中的多个核心技术和实践,包括JSP、Servlet、MVC模式、数据库操作、构建工具、版本控制以及部署策略。对于初学者来说,这是一个了解和学习Java Web开发的绝佳实践案例。

    Hudson+Maven+SVN

    2. **Hudson**的安装:可以从官方网站下载Hudson的war文件,将其部署在支持Java的web服务器上,如Tomcat。启动Hudson,完成初始化设置。 3. **SVN**的安装:同样,下载适合操作系统的SVN客户端,如TortoiseSVN,...

    关于windows下jenkins+svn+maven+tomcat持续集成

    Maven是Java项目管理和构建的工具,通过POM.xml文件定义项目的依赖关系和构建过程。在Windows上安装Maven后,需要将其路径添加到系统的PATH环境变量中。Jenkins也需要安装Maven插件,这样可以在构建步骤中调用Maven...

    Maven:Git项目

    【Maven:Git项目】与【JavaScript】的结合在现代软件开发中是非常常见的,尤其是在Web应用的构建过程中。Maven是Apache软件基金会开发的一款项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。而Git...

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

    结合这些标签,我们可以推断这个管理系统是用Java开发的,使用SpringMVC作为Web层的架构,Maven作为项目管理和构建工具,而Jetty作为应用服务器运行。这样的技术栈组合在企业级应用中非常常见,提供了高效、可维护和...

    maven ,git ,node ,mysql 打包下载

    Maven 是一个Java项目管理和综合工具,它可以帮助开发者构建、管理和部署项目。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过POM文件来管理项目的构建、报告和依赖关系。Apache Maven ...

    maven环境搭建

    - **group**:合并多个hosted/proxy仓库,方便配置Maven依赖。 - **配置Maven使用Nexus**:通过修改`$user_home/.m2/settings.xml`文件中的Repository配置来指定使用Nexus作为依赖仓库。 #### 构件部署至Nexus - ...

Global site tag (gtag.js) - Google Analytics