maven使用.docx
- 文档编号:11345937
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:30
- 大小:873.85KB
maven使用.docx
《maven使用.docx》由会员分享,可在线阅读,更多相关《maven使用.docx(30页珍藏版)》请在冰豆网上搜索。
maven使用
安装EclipseIDEforJavaEEDevelopers
解压eclipse-jee-galileo-win32.zip
打开eclipse.exe,配置eclipse
设置工作区编码设为utf-8;
Window->preference
导入本地的java
给eclipse安装插件
进入安装插件目录
2.3.1先安装subeclipse插件就是svn
svn- http:
//subclipse.tigris.org/update_1.6.x
我这里是灰色的说明我安装过了这里只是截图说明下,我就不继续安装了
安装这些就可以了,多了没必要。
安装过程中可能会出异常,请不用管它,subclipse官方说这异常时插件没被eclipse标注,对安装使用没啥影响,继续就好。
安装完后重启eclipse点右上角圈中按钮,出现svn资源库研究项
表示eclipse的svn插件已经按装完成。
2.3.2再安装maven插件
m2e- http:
//m2eclipse.sonatype.org/sites/m2e
我这里是灰色的说明我安装过了这里只是截图说明下,我就不继续安装了
安装完成后重启eclipse
点击左侧项目区新建项目选Other
找到maven如下,有maven项,说明maven插件安装成功
配置maven,默认的eclipse的maven插件的maven版本是3.0我们要改成自己装的maven-2.2.1版本.
进入eclipse的配置中,选择maven配置项installatiions,and找到你的本机maven安装目录.
配置maven的setting.xml
点击应用.ok.,到这里maven配置也就完成了
2.3.3最后安装maven插件的扩展插件包
m2e-extras- http:
//m2eclipse.sonatype.org/sites/m2e-extras
都选上,其中mavenscmhandlerforsubclipse就是让maven支持svn,前提你先装subeclipse插件,其他插件和咋们后面部署hippo没关系,就不介绍了,但建议都装上.
安装过程中也可能出现类似安装subeclipse时的异常,不用理会,继续就好.安装完后重启.
新建项目选other,找到maven项
点击CheckoutMavenProjectsfromSCM
出现svn选项表示插件安装成功了.
EclipseisrunninginaJRE,butaJDKisrequired
SomeMavenpluginsmaynotworkwhenimportingprojectsorupdatingsourcefolders.
在eclipse.ini中添加VM启动参数,制定eclipse启动使用的vm,修改后的文件内容如下
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vm
C:
\ProgramFiles\Java\jdk1.5.0_12\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
解决eclipse安装maven的问题:
Unabletoupdateindexforcentral|http:
//repo1.maven.org/maven2
copy一个settings.xml到C:
/DocumentsandSettings/username/.m2目录,并修改settings.xml文件,添加一个http代理:
--proxy
|Specificationforoneproxy,tobeusedinconnectingtothenetwork.
|
-->
1.安装m2eclipse插件
要用Eclipse构建Maven项目,我们需要先安装meeclipse插件
点击eclipse菜单栏Help->EclipseMarketplace搜索到插件MavenIntegrationforEclipse并点击安装即可,如下图:
安装成成之后我们在Eclipse菜单栏中点击File->New->Other,在弹出的对话框中会看到如下图所示:
2. 构建Maven项目
以eclipse3.6为例
1)创建简单Maven项目
点击Eclipse菜单栏File->New->Ohter->Maven得到如下图所示对话框:
选中MavenProject并点击Next,到下一个对话框继续点击Next得到如下对话框
如图示操作,选择maven-archetype-quickstart,点击Next
按图示填写好groupId,artfactId,version等信息,点击Finish。
由此我们成功创建了一个简单的Maven项目,项目结构如图所示
2)创建Mavenweb项目
操作跟创建简单Maven项目类似,点击Eclipse菜单File->New->Other->Maven->MavenProject
在选择maven-archetype的界面进行如下操作:
点击Next,填写好相应的groupId,artifactId,version等信息,点击Finish
得到的Mavenweb项目结构如下图所示:
右击项目,点击Properties->ProjectFacets
如上图可以看到项目为web2.3java1.5当然我们也可以改成我们所需要的版本,打开xml文件my-app-web/.settings/mon.project.facet.core.xml,进行修改即可:
Xml代码
1.
xml version="1.0" encoding="UTF-8"?
>
2.
3.
4.
5.
6.
7.
3)导入Maven项目
在Eclipseprojectexplorer中右击,在弹出框中选择import,得到如下图所示:
选择ExistingMavenProjects,并点击Next,得到如下图所示对话框:
选择一个已经创建好的Maven项目,并点击Finish。
由此,导入Maven项目成功
3. 运行Maven命令
右击项目,点击Runas,如下图:
即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息
如果你想运行的maven命令在这里没有找到,点击Mavenbuild创建新的命令,操作如下图所示:
如下图填入Maven命令,点击Run即可
新增的maven命令可以通过如下方式找到,并再次运行:
1.三套生命周期
Maven拥有三套相互独立的生命周期,它们分别为clean,default和site。
每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。
以clean生命周期为例,它包含的阶段有pre-clean,clean和postclean。
当用户调用pre-clean的时候,只有pre-clean得以执行,当用户调用clean的时候,pre-clean和clean阶段会得以顺序执行;当用户调用post-clean的时候,pre-clean,clean,post-clean会得以顺序执行。
较之于生命周期阶段的前后依赖关系,三套生命周期本身是相互独立的,用户可以仅仅调用clean生命周期的某个阶段,或者仅仅调用default生命周期的某个阶段,而不会对其他生命周期产生任何影响。
2.clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
1)pre-clean执行一些清理前需要完成的工作。
2)clean清理上一次构建生成的文件。
3)post-clean执行一些清理后需要完成的工作。
3. default生命周期
default生命周期定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,它包含的阶段如下:
1)validate验证项目是否正确和所有需要的相关资源是否可用
2)initialize初始化构建
3)generate-sources
4) process-sources处理源代码
5)generate-resources
6) process-resources处理项目主资源文件。
对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
7)compile编译项目的主源代码
8)process-classes
9) generate-test-sources
10)process-test-sources处理项目测试资源文件
11)generate-test-resources
12) process-test-resources处理测试的资源文件
13)test-compile编译项目的测试代码
14)process-test-classes
15) test使用单元测试框架运行测试,测试代码不会被打包或部署
16)prepare-package做好打包的准备
17)package接受编译好的代码,打包成可发布的格式
18) pre-integration-test
19) integration-test
20) postintegration-test
21) verify
22) install将包安装到Maven本地仓库,供本地其他Maven项目使用
23)deploy将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
4. site生命周期
site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。
该生命周期包含如下阶段:
1)pre-site执行一些在生成项目站点之前需要完成的工作
2)site生成项目站点文档
3)post-site执行一些在生成项目站点之后需要完成的工作
4)site-deploy将生成的项目站点发布到服务器上
1.为什么要定义Maven坐标
在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的。
在这个基础上,其他Maven项目才能应用该项目生成的构件。
2.Maven坐标详解
Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。
下面是一组坐标定义:
Xml代码
1.
2.
3.
4.
下面讲解一下各个坐标元素:
groupId :
定义当前Maven项目隶属的实际项目。
首先,Maven项目和实际项目不一定是一对一的关系。
比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。
这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。
其次,groupId不应该对应项目隶属的组织或公司。
原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。
最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。
artifactId:
该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。
比如上例中的my-app。
version:
该元素定义Maven项目当前的版本
packaging:
定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-0.0.1-SNAPSHOT.jar。
也可以打包成war,ear等。
当不定义packaging的时候,Maven会使用默认值jar
classifier:
该元素用来帮助定义构建输出的一些附件。
附属构件与主构件对应,如上例中的主构件为my-app-0.0.1-SNAPSHOT.jar,该项目可能还会通过一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 这样附属构件也就拥有了自己唯一的坐标
我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可。
1.依赖配置
依赖可以声明如下:
Xml代码
1.
2. ...
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
我们在Maven实战
(二)中就遇到了依赖的概念,项目中测试需要依赖junitjar包,依赖配置如下:
Xml代码
1.
2.
3.
4.
5.
6.
7.
8.
依赖会包含基本的groupId,artifactId,version等元素,根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个依赖。
下面详细讲解每个依赖可以包含的元素:
groupId,artifactId和version:
依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖
type:
依赖的类型,对应于项目坐标定义的packaging。
大部分情况下,该元素不必声明,其默认值是jar
scope:
依赖的范围,下面会进行详解
optional:
标记依赖是否可选
exclusions:
用来排除传递性依赖,下面会进行详解
大部分依赖声明只包含基本坐标。
2.依赖范围
Maven在编译主代码的时候需要使用一套classpath,在编译和执行测试的时候会使用另一套classpath,实际运行项目的时候,又会使用一套classpath。
依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系,Maven有以下几种依赖范围:
compile:
编译依赖范围。
如果没有指定,就会默认使用该依赖范围。
使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。
test:
测试依赖范围。
使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖。
典型的例子就是JUnit,它只有在编译测试代码及运行测试的时候才需要。
provided:
已提供依赖范围。
使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时无效。
典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍。
runtime:
运行时依赖范围。
使用此依赖范围的Maven依赖,对于测试和运行classpath有效,但在编译主代码时无效。
典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
system:
系统依赖范围。
该依赖与三种classpath的关系,和provided依赖范围完全一致。
但是,使用system范围依赖时必须通过systemPath元素显式地指定依赖文件的路径。
由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。
systemPath元素可以引用环境变量,如:
Xml代码
1.
2.
3.
4.
5.
6.
7.
import(Maven2.0.9及以上):
导入依赖范围。
该依赖范围不会对三种classpath产生实际的影响,稍后会介绍到。
3.传递性依赖
下面我们看一个简单的项目,读者可从附件中下载源码
POM.xml配置如下:
Xml代码
1. //maven.apache.org/POM/4.0.0" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" 2. xsi: schemaLocation="http: //maven.apache.org/POM/4.0.0 http: //maven.apache.org/xsd/maven-4.0.0.xsd"> 3. 4. 5. 6. 7. 8.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- maven 使用