Maven父子工程搭建详解

最近在学习Maven,把一个开源的项目改成maven管理,期间使用到了多项目,从网上查阅了一些资料,主要参考的是http://kyfxbl.iteye.com/blog/1680045,在此把自己的一些心得体会写出来,供大家学习交流。

关于maven的安装,在此就不进行阐述,请参考网上其他教程。

本实例由4个项目组成,其中,aggregator是父工程,同时承担聚合模块和父模块的作用,没有实际代码和资源文件;open-plagform-common是公共的java工程;open-platfor-web是公共的web文件,主要包括css、js等;open-bug-m是最终要发布的应用,形成war包。

一、建立一个Maven工程:aggregator

/aggregator

   /src/main/java

   /src/test/java

   pom.xml

 

 

此工程主要是父模块,聚合其他工程,没有实际代码和资源文件,最主要的是pom.xml文件,其主要内容如下:

 
  1. 4.0.0

  2. cn.jess.platform

  3. aggregator

  4. 0.0.1-SNAPSHOT

  5. pom

  6. aggregator

  7.  
  8. ../open-platform-common

  9. ../open-platform-web

  10. ../open-bug-m

  11.  
  12. nexus-snapshots

  13. nexus distribution snapshot repository

  14. http://127.0.0.1:8081/nexus/content/repositories/snapshots/

  15.  
  16.  
  17. org.apache.maven.plugins

  18. maven-resources-plugin

  19. 2.6

  20. UTF-8

  21.  
  22. org.apache.maven.plugins

  23. maven-compiler-plugin

  24. 2.5.1

  25. UTF-8

  26. 1.6

  27. 1.6

  28.  
  29.  
  30.  
  31.  
  32. com.sun

  33. tools

  34. 1.6.0

  35. system

  36. ${env.JAVA_HOME}/lib/tools.jar

  37.  
  38.  


二、建立一个Maven工程:open-platform-common

 

此工程主要是项目中使用到的公共java类库,pom文件主要内容如下:

 
  1. 4.0.0

  2. open-platform-common

  3. jar

  4. UTF-8

  5. myRepository

  6. local private nexus

  7. http://127.0.0.1:8081/nexus/content/groups/public/

  8. true

  9. true

  10. myPluginRepository

  11. local private nexus

  12. http://127.0.0.1:8081/nexus/content/groups/public/

  13. true

  14. false

  15. cn.jess.platform

  16. aggregator

  17. 0.0.1-SNAPSHOT

  18. ../aggregator


三、建立一个Maven工程:open-platform-web

    此工程主要是项目中使用到的公共web文件,pom文件主要内容如下:

 
  1. 4.0.0

  2. open-platform-web

  3. war

  4. UTF-8

  5. myRepository

  6. local private nexus

  7. http://127.0.0.1:8081/nexus/content/groups/public/

  8. true

  9. true

  10. myPluginRepository

  11. local private nexus

  12. http://127.0.0.1:8081/nexus/content/groups/public/

  13. true

  14. false

  15.  
  16. cn.jess.platform

  17. aggregator

  18. 0.0.1-SNAPSHOT

  19. ../aggregator


注意:此工程的WEB-INF目录下必须包含web.xml文件,否则在执行mvn时会报错

    四、建立一个Maven工程:open-bug-m:

此工程是最终要发布的应用,其依赖于open-platform-common和open-platform-web,因此在pom文件中要加入这两个工程的依赖,pom文件内容如下所示:

 
  1. open-bug-m

  2. open-bug-m

  3. war

  4. UTF-8

  5. cn.jess.platform

  6. aggregator

  7. 0.0.1-SNAPSHOT

  8. ../aggregator

  9. myRepository

  10. local private nexus

  11. http://127.0.0.1:8081/nexus/content/groups/public/

  12. true

  13. true

  14. myPluginRepository

  15. local private nexus

  16. http://127.0.0.1:8081/nexus/content/groups/public/

  17. true

  18. false

  19. cn.jess.platform

  20. open-platform-common

  21. 0.0.1-SNAPSHOT

  22. jar

  23. cn.jess.platform

  24. open-platform-web

  25. 0.0.1-SNAPSHOT

  26. war

  27.  
  28.  
  29. open-bug

  30. org.apache.maven.plugins

  31. maven-war-plugin

  32. 2.3

  33. WEB-INF/web.xml

  34. cn.jess.platform

  35. open-platform-web

  36. org.codehaus.cargo

  37. cargo-maven2-plugin

  38. 1.2.3

  39. tomcat7x

  40. F:\apache-tomcat-7.0.42(x64)

  41. existing

  42. F:\apache-tomcat-7.0.42(x64)

  43. -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787

  44. cargo-run

  45. pre-integration-test

  46. run


关于maven-war-plugin和cargo-maven2-plugin的使用方法请参考网上其他使用教程。

所有上述四个工程准备就绪后,执行mvn install就可对工程项目进行部署。

1. 创建一个新maven项目

2.

3. 输入groupid和artifactid,后面步骤直接next,最后finish

4.创建好后

5. 在主项目名称上点右键,创建第一个子模块

6

7

8 同理,在创建一个模块,创建好后

 9 打开Project Structure将2个子模块的src/mian/java目录设置为Sources,只有设置为sources了,后面才能创建Class.

10 设置项目中childmoduletwo依赖于childmoduleone

 11

12 前面设置后,只是为了再调用依赖代码时静态编译通过,也就是说仅仅是在写代码时,childmoduletwo调用childmoduleone不提示错误,实际运行时会出错的。

所以还需要在pom文件设置依赖。

13 childmoduleone中创建一个类One,写一个个测试方法,后面会被childmoduletwo调用

14 childmoduletwo中写一个类Two,用来调用One中的sayHello方法

15 运行Two

 

ps: 现在很多大型项目都是划分多个模块的,有的模块之间还有依赖关系,本文创建了一个有多个模块的maven项目,并且在模块之间添加了依赖关系,最后简单测试了依赖模块的调用。

你可能感兴趣的:(Maven工程)