zoukankan      html  css  js  c++  java
  • 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,主要作用是声明子模块,代码如下:

    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吧!

  • 相关阅读:
    Java模拟ATM运行过程(第一版)
    双色Hanoi塔问题及判断指令
    一点编程风格
    游戏程序员养成计划
    OGRE编译
    Python学习收藏
    case 语句注意
    [c、c++]宏中"#"和"##"的用法(zz)
    网络代码平台tortoise svn+google code
    使用delegate进行解耦
  • 原文地址:https://www.cnblogs.com/telwanggs/p/7522476.html
Copyright © 2011-2022 走看看