`
yang_ch
  • 浏览: 79492 次
社区版块
存档分类
最新评论

maven多模块项目,多web合并项目使用心得

阅读更多

Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow

 

       此文章适合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,主要作用是声明子模块,代码如下:

<modules>
	<module>modules/fixflow-core</module>
	<module>modules/fixflow-expand</module>
	<module>modules/fixflow-common-api</module>
	<module>modules/fixflow-common-servlet</module>
	<module>modules/fixflow-manage-servlet</module>
	<module>modules/fixflow-webapp-common</module>
	<module>modules/fixflow-webapp-taskcenter</module>
	<module>modules/fixflow-webapp-managecenter</module>
	<module>modules/fixflow-webapp-explorer</module>
	<module>modules/fixflow-converter</module>
	<module>modules/fixflow-webapp-editor</module>
</modules>

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

<parent>
    <groupId>com.founder.fix.fixflow</groupId>
    <artifactId>fixflow-root</artifactId>
    <version>5.0</version>
    <relativePath>../..</relativePath>
</parent>

 

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

 

       maven多web合并项目

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

 

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

        

<build>  
        <finalName>bpmcenter</finalName>  
        <plugins>  
            <!-- 合并多个war -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-war-plugin</artifactId>  
                <configuration>  
                    <packagingExcludes>WEB-INF/web.xml</packagingExcludes>    
                    <overlays>  
                        <overlay>  
                            <groupId>com.founder.fix.fixflow</groupId>  
                            <artifactId>fixflow-webapp-taskcenter</artifactId>  
                        </overlay>   
                    </overlays>  
                </configuration>  
            </plugin>  
        </plugins> 
</build> 

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

  1. 被合并的子web项目packaging属性必须是war
  2. 被合并的子web项目,必须在主项目中添加依赖关系。
  3. 被合并的子web项目中,如果没有web.xml,则需要在pom.xml中声明
    <build>
        <finalName>fixflow-webapp-editor</finalName>
            <plugins>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-war-plugin</artifactId>  
                    <configuration>  
                        <failOnMissingWebXml>false</failOnMissingWebXml>  
                    </configuration>  
                </plugin>     
            </plugins>  
    </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吧!

 

3
0
分享到:
评论
3 楼 oarsman 2015-07-20  
我试着按您的方法合并多个WEB子模块项目,并在父POM中增加了对子模块的依赖,结果在打包的时候,报告循环依赖错误。说父项目和子模块互相依赖了,打包失败。不知道您有没有遇到过这个问题,如果遇到的话,怎么解决的?是否能提供一个完整的例子出来呢?万分感谢!
2 楼 zhumingpeng 2014-11-16  
我发布到到tomcat的webapps 还是一个war没有合并啊 大神
1 楼 zhumingpeng 2014-11-14  
大神  你说的 主项目  是 代表fixflow-webapp-taskcenter吗

相关推荐

    使用Maven构建多模块项目

    Maven作为Java领域广泛使用的构建工具,提供了强大的支持来管理多模块项目。本文将深入探讨如何利用Maven构建多模块项目,以及在实际操作中需要注意的关键点。 1. Maven多模块项目结构: Maven多模块项目通常遵循...

    maven多模块项目(简单实例)

    本实例将详细介绍如何创建和管理一个简单的Maven多模块项目。 首先,我们要理解Maven的模块关系。在Maven中,多模块项目是由一个父模块(Parent Module)和若干子模块(Child Modules)组成。父模块主要负责定义...

    maven多模块项目

    在本项目中,我们看到"Maven多模块项目"与Jetty服务器结合使用,这通常是为了方便开发阶段的快速部署和测试。 Jetty是一个轻量级的嵌入式Java Web服务器和Servlet容器,它可以快速启动,占用资源少,适合用于开发...

    maven多模块项目构建过程

    本篇文章将详细探讨"Maven多模块项目构建过程",并结合提供的资源"搭建maven多工程模块步骤",来深入理解如何创建和管理一个包含多个子项目的Maven工程。 1. Maven多模块项目概述: Maven多模块项目是指由一个父...

    maven多模块项目工程-已搭建好

    总之,"maven多模块项目工程-已搭建好"是一个已经配置好的、使用Eclipse开发的项目结构,通过"xd-parent"模块实现了依赖和插件的集中管理,方便开发者进行模块化开发,提高了项目的可维护性和开发效率。在实际使用中...

    maven多模块项目搭建

    Maven 多模块项目搭建是一个常见的Java开发任务,它允许开发者将大型项目分解成更小、更易管理的模块,每个模块专注于特定的功能或组件。在本教程中,我们将探讨如何使用Eclipse集成开发环境(IDE)和Maven插件来...

    Maven 多模块项目

    【Maven 多模块项目】是一个使用 Maven 构建的软件开发项目,旨在实现模块化、可维护的代码结构。Maven 是一个流行的构建工具,它通过管理项目的依赖关系、构建流程以及提供标准化的项目结构,帮助开发者更高效地...

    ssm+maven多模块项目搭建

    总结起来,"ssm+maven多模块项目搭建"是一个涉及Spring、SpringMVC、Mybatis和Maven四个关键技术的项目实践,它展示了如何在Java Web开发中运用这些工具进行模块化设计和构建,以达到提高开发效率和代码质量的目标。...

    介绍idea通过svn检出maven多模块项目

    详细介绍IDEA从远程仓库SVN拉去MAVEN项目.多模块的项目

    如何提高Maven多模块项目编译速度.docx

    Maven多模块项目编译速度慢,下面我们来学习下优化的方法。 mvn clean package -T 4C -Dmaven.test.skip=true -Dmaven.compile.fork=true -T 4C 代表本机4个CPU内核都参与编译工程, -Dmaven.test.skip=true 代表...

    maven构建多模块项目

    本文将深入探讨如何使用Maven构建多模块项目,以实现代码的高效组织和复用。 首先,Maven多模块项目是将一个大型项目划分为多个相互依赖的子项目,每个子项目负责特定的功能模块,这样可以提高开发效率,便于代码...

    maven多模块web项目

    【标题】"maven多模块web项目"是一个基于Maven构建的复杂Web应用程序,它将项目分解为多个独立的模块,每个模块都有特定的功能或组件,这样可以提高代码的可维护性和可重用性。Maven是Apache软件基金会开发的一款...

    1.2.maven多模块项目配置1

    Maven多模块项目配置详解 在本节中,我们将详细讨论Maven多模块项目配置的实现方法。Maven多模块项目是指一个父模块包含多个子模块,每个子模块都是一个独立的Maven项目。这种结构可以使得项目的管理和维护变得更加...

    maven多模块整合

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

    基于maven创建web项目

    基于maven创建web项目 maven是一种基于项目对象模型(Project Object Model,POM)的项目管理工具,由Apache软件基金会开发和维护。...通过这篇文章,读者可以学习到如何使用maven来构建和管理web项目。

    maven分模块小demo

    总结来说,"maven分模块小demo"是一个典型的Maven多模块项目示例,它演示了如何利用Maven进行项目结构的划分、依赖管理、构建和部署。对于初学者而言,这是一个理解Maven工作原理和实践项目组织的良好起点。通过深入...

    maven 模块化项目demo

    通过这个“maven 模块化项目demo”,开发者可以学习如何划分项目结构,如何配置POM文件,以及如何利用Maven管理多模块项目。这有助于提升开发效率,降低维护成本,同时便于团队协作,因为每个人都只需要关注自己负责...

    用Eclipse创建Maven多模块项目

    通过这种方式,Eclipse和Maven结合使用,可以帮助开发者轻松地创建和管理复杂的多模块项目。这种方式有利于代码的分层和解耦,使得团队成员能专注于各自模块的开发,同时保证了整体项目的构建一致性。在实际开发中,...

    maven多模块空项目

    Maven多模块项目是Maven项目结构的一种高级形式,允许将一个大的项目分解为多个相互依赖的小模块。每个模块都有自己的`pom.xml`文件,定义其构建和依赖关系。而顶层的父`pom.xml`文件则负责管理所有子模块的共性配置...

    Maven多模块web应用实例

    首先,我们需要理解什么是Maven多模块项目。在Maven中,一个父项目可以包含多个子模块,每个子模块代表项目的一个独立部分,如业务逻辑、数据访问层、Web界面等。这种结构有助于代码的分层和解耦,便于团队协作和...

Global site tag (gtag.js) - Google Analytics