maven使用.docx

上传人:b****8 文档编号:11345937 上传时间:2023-02-28 格式:DOCX 页数:30 大小:873.85KB
下载 相关 举报
maven使用.docx_第1页
第1页 / 共30页
maven使用.docx_第2页
第2页 / 共30页
maven使用.docx_第3页
第3页 / 共30页
maven使用.docx_第4页
第4页 / 共30页
maven使用.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

maven使用.docx

《maven使用.docx》由会员分享,可在线阅读,更多相关《maven使用.docx(30页珍藏版)》请在冰豆网上搜索。

maven使用.docx

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.

|

optional

true

http

proxyuser

proxypass

80

|

-->

optional

true

http

8080

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.com.mycompany.app  

2.  my-app  

3.  jar  

4. 0.0.1-SNAPSHOT  

 下面讲解一下各个坐标元素:

 

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.      group-a  

6.      artifact-a  

7.      1.0  

8.        

9.          

10.          group-c  

11.          excluded-artifact  

12.          

13.        

14.      

15.      

16.      group-a  

17.      artifact-b  

18.      1.0  

19.      bar  

20.      runtime  

21.      

22.    

23.  

 我们在Maven实战

(二)中就遇到了依赖的概念,项目中测试需要依赖junitjar包,依赖配置如下:

Xml代码 

1.  

2.      

3.      junit  

4.      junit  

5.      3.8.1  

6.      test  

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.    javax.sql  

3.    jdbc-stdext  

4.    2.0  

5.      

6.    ${java.home}/lib/rt.jar  

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.0.0  

4.  

5.  com.mycompany.app  

6.  my-app-simple  

7.  0.0.1-SNAPSHOT  

8.  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1