公司用maven进行项目依赖管理,就学了来。。以下是学习过程写下的文档.
1、Maven是什么
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
2、Maven怎样实现依赖管理
每个Maven项目都有一个pom.xml文件,pom(Project Object Model)为项目命名,提供了项目的一组唯一标识符(坐标),并且通过依赖,父和先决条件来定义它和其它项目的关系。
项目的唯一标识符(坐标)由组标识符(groupId)、构件标识符(artifactId)和版本(version)来定义的, 项目间可以通过使用这些坐标来声明依赖
3、怎样构建Maven项目
公司使用的是m2eclipse插件,构建maven项目方式如下:
Fileànewàotheràmaven project弹出如下的对话框中可以先选择“create a simple project”然后”next”或者直接点击“next” (前者只能构建简单的maven项目,后者可以构建基于hibernate , spring . struts2,webapp等项目,在此只介绍直接”next”)
直接点击“next”,在catalog中选择”Internal”,就会出现如下对话框,其中”Artifact Id”一项
用以提供Maven项目类型选择,其对照的类型如文档附录所示。在此选择”quickstart”(就是上一步中的”create a simple project ”)
点出”next”后出现 如下对话框,其中的”group id” 与 ”artifact id” 与 “version”三项唯一定位一个项目,在整个workspace里不能重复。在”Advanced”下面的”Name template”选项中你可以定义自己项目的命名规则.选择“[artifactId]”,则项目的名称与你在填写的”Artifact Id”一致,其它类推.
4、最佳构建Maven项目方式
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。所以我们应该构建多模块的Maven项目。这里实际上遵守一个设计模式原则:“高内聚,低耦合”。
5、如何构建包含模块的项目
多模块的项目就类似于接口与实现类,包含模块的项目本身也是一个maven项目,但它不应该有任何实现,所以它是一个”simple project”,直接在” Maven项目构建图1”中选择“create a simple project”在弹出的对话框的“Packing“下拉框中选择”pom“即可(即打包方式为”pom”,通常我们会把项目打包为“jar”或者”war”).
那怎样为这个项目添加具体模块呢?在workspace里面打到你刚建的那个可以包含模块的项目,进行如下图所示操作,然后就可以构建你想要的类型的项目(当然可以嵌套模块)
6、怎样使用mavenhome
Mavenhome就像是一个仓库,可以向里面添加项目依赖的jar包,添加jar包的命令(只有在本机上安装了maven才能使用)
mvn install:install-file -Dfile=
-DartifactId=
7、eclipse里面要配置maven的用户设置和本地仓库路径
window-->preferences-->maven-->installations中user settings:*/settings.xml ; local repository: 本地仓库路径
maven项目类型:
1. internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
2. internal -> appfuse-basic-spring (AppFuse archetype for creating a web application with Hibernate, Spring and Spring MVC)
3. internal -> appfuse-basic-struts (AppFuse archetype for creating a web application with Hibernate, Spring and Struts 2)
4. internal -> appfuse-basic-tapestry (AppFuse archetype for creating a web application with Hibernate, Spring and Tapestry 4)
5. internal -> appfuse-core (AppFuse archetype for creating a jar application with Hibernate and Spring and XFire)
6. internal -> appfuse-modular-jsf (AppFuse archetype for creating a modular application with Hibernate, Spring and JSF)
7. internal -> appfuse-modular-spring (AppFuse archetype for creating a modular application with Hibernate, Spring and Spring MVC)
8. internal -> appfuse-modular-struts (AppFuse archetype for creating a modular application with Hibernate, Spring and Struts 2)
9. internal -> appfuse-modular-tapestry (AppFuse archetype for creating a modular application with Hibernate, Spring and Tapestry 4)
10. internal -> maven-archetype-j2ee-simple (A simple J2EE Java application)
11. internal -> maven-archetype-marmalade-mojo (A Maven plugin development project using marmalade)
12. internal -> maven-archetype-mojo (A Maven Java plugin development project)
13. internal -> maven-archetype-portlet (A simple portlet application)
14. internal -> maven-archetype-profiles ()
15. internal -> maven-archetype-quickstart ()
16. internal -> maven-archetype-site-simple (A simple site generation project)
17. internal -> maven-archetype-site (A more complex site project)
18. internal -> maven-archetype-webapp (A simple Java web application)
19. internal -> jini-service-archetype (Archetype for Jini service project creation)
20. internal -> softeu-archetype-seam (JSF+Facelets+Seam Archetype)
21. internal -> softeu-archetype-seam-simple (JSF+Facelets+Seam (no persistence) Archetype)
22. internal -> softeu-archetype-jsf (JSF+Facelets Archetype)
23. internal -> jpa-maven-archetype (JPA application)
24. internal -> spring-osgi-bundle-archetype (Spring-OSGi archetype)
25. internal -> confluence-plugin-archetype (Atlassian Confluence plugin archetype)
26. internal -> jira-plugin-archetype (Atlassian JIRA plugin archetype)
27. internal -> maven-archetype-har (Hibernate Archive)
28. internal -> maven-archetype-sar (JBoss Service Archive)
29. internal -> wicket-archetype-quickstart (A simple Apache Wicket project)
30. internal -> scala-archetype-simple (A simple scala project)
31. internal -> lift-archetype-blank (A blank/empty liftweb project)
32. internal -> lift-archetype-basic (The basic (liftweb) project)
33. internal -> cocoon-22-archetype-block-plain ([http://cocoon.apache.org/2.2/maven-plugins/])
34. internal -> cocoon-22-archetype-block ([http://cocoon.apache.org/2.2/maven-plugins/])
35. internal -> cocoon-22-archetype-webapp ([http://cocoon.apache.org/2.2/maven-plugins/])
36. internal -> myfaces-archetype-helloworld (A simple archetype using MyFaces)
37. internal -> myfaces-archetype-helloworld-facelets (A simple archetype using MyFaces and facelets)
38. internal -> myfaces-archetype-trinidad (A simple archetype using Myfaces and Trinidad)
39. internal -> myfaces-archetype-jsfcomponents (A simple archetype for create custom JSF components using MyFaces)
40. internal -> gmaven-archetype-basic (Groovy basic archetype)
41. internal -> gmaven-archetype-mojo (Groovy mojo archetype)