课程maven建议以wps打开_第1页
课程maven建议以wps打开_第2页
课程maven建议以wps打开_第3页
课程maven建议以wps打开_第4页
课程maven建议以wps打开_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mavenauthor:Hsu。

qq:759694429email:本节内容QuickStartm2eclipse坐标与依赖聚合与继承Nexus生命周期与插件本节目标1、Maven简介及QuickStart2、熟悉m2eclipse的使用3、熟悉Maven的坐标配置4、熟悉Maven的依赖配置5、熟悉Maven的聚合与继承6、熟悉Nexus的配置与使用7、熟悉Maven的生命周期8、熟悉Maven的常用插件配置QuickStartQuickStart? 1、概述 1)Maven,译为“专家”或“内行”,它是Apache组织中的一个颇为成功的 开源项目。Maven主要服务于Java平台的项目构建、依赖管理和项目信 息管理! 2)Maven是基于项目对象模型(POM,ProjectObjectModel),可以通过一 小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。目前 主流的开源项目几乎都在使用Maven构建项目(如Struts、Hibernate、 Spring),可见学习它的必要性! 3)目前主流的构建工具还有:Ant、Gradle等等...

QuickStartQuickStart?

2、QuickStart 1)下载Maven

2)解压到指定盘,并配置环境变量

MAVEN_HOME=D:\maven\apache-maven-3.2.1 path=;D:\maven\apache-maven-3.2.1\bin; 3)测试

cmd-->mvn-version

注:JDK环境必须先安装好,否则后面无法正常编译项目

4)切换到workspace下QuickStartQuickStart? 2、QuickStart 5)构建一个Java项目 参考备注!

QuickStartQuickStart? 2、QuickStart 6)构建一个Web项目 参考备注!

注:Maven生成的Web项目是不完整的,还需要我们还建立几个文件!QuickStartQuickStart?

2、QuickStart 7)Settherepository <localRepository>d:\maven\local-repository</localRepository> 8)添加依赖,如Struts <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.20</version> </dependency>

注:maven提供了一个中央仓库,内置了许多的jar描述:

9)项目打包 转到项目所在的目录下,输入:mvncleanpackage 10)生成的target查看 会发现在生成的lib里没有找到junit包,原因:<scope>test</scope>!QuickStartQuickStart? 2、QuickStart 11)QuickStart总结: a)COC(ConventionOverConfiguration,约定优于配置) Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则, 只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外 的学习成本 b)利用配置自动添加依赖m2eclipsem2eclipse?

1、m2eclipse的介绍 a)m2eclipse是一个在Eclipse中集成Maven的插件,有了该插件,用户可以 方便地在Eclipse中执行Maven命令、创建Maven项目、修改POM文件等! b)需要说明的是:m2eclipse会一定bug,但这并不maven本身的问题! 2、m2eclipse的安装 1)支持在线安装和离线安装两种 2)在新版本的eclipse里已经内置了m2eclipse插件 3、m2eclipse的配置 1)Windown->Preferences->Maven->Installations->添加自已下载的Maven 2)Windown->Preferences->Maven->UserSetting->添加自已下载的Setting Setting所在目录:D:\maven\apache-maven-3.2.1\conf\settings.xmlm2eclipsem2eclipse? 4、m2eclipse为Eclipse环境提供了全面丰富的Maven集成。它的主要功能如下: 1)创建和导入Maven项目 2)管理依赖并与Eclipse的classpath集成 3)自动下载依赖 4)自动解析依赖的sources与javadoc包 5)使用MavenArchetype创建项目 6)浏览与搜索远程Maven仓库 7)从MavenPOM具体化一个项目 8)从SCM仓库签出Maven项目9)自动适配嵌套的多模块Maven项目至Eclipse 10)集成WebToolsProjects(WTP) 11)集成Subeclipse12)集成Mylyn13)可视化POM编辑14)图形化依赖分析m2eclipsem2eclipse? 5、m2eclipse的使用 1)创建项目

New->MavenProject->Next->SelectArchetype->SpecifyParameters->Finish a)SelectAnArchetype ·java项目

·web项目m2eclipsem2eclipse? 5、m2eclipse的使用 1)创建项目 b)SelectArchetypeParameters

注: a)GroupId:项目类型.开发者.项目名 b)ArtifactId:项目名-模块名 c)Version:默认 d)Package:项目类型.开发者.项目名.模块名 e)m2eclipse创建的项目依然不完整,需要额外创建几个文件!m2eclipsem2eclipse? 5、m2eclipse的使用 2)导入项目

Import->Maven->ExistingMavenProjects->Browse->Finish 3)执行mvn命令 a)要在m2eclipse中执行mvn命令,首选要做的是打开Eclipse的Console 视图,然后切换到m2eclipse的Maven控制台。Maven的构建信息将在 这个视图里显示! b)执行mvn命令 ·内置:直接在项目或pom.xml上,右键RunAs,选择相应命令 ·自定:直接在项目或pom.xml上,右键RunAs,选择MavenBuild... 自定义规则不用输入mvn,直接输入package即可! 注:自定的命令,可以第一个MavenBuild项里保存,方便以后选择!m2eclipsem2eclipse? 5、m2eclipse的使用 4)添加依赖

a)第一种:在接在项目或pom.xml上右键->Maven->AddDependency b)第二种:双击pom.xml->选择pom.xml标签进行编辑

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <scope>test</scope> </dependency>

注:在中央仓库没有的依赖,需要手动把现有的jar,放到本地仓库再依赖:参考备注m2eclipsem2eclipse? 5、m2eclipse的使用 5)分析依赖 双击pom.xml->选择DenpendencyHierarchy标签 注:如果依赖有包冲突会出现[conflict]标记! 6)其它实用功能

a)pom.xml的代码提示 b)下载依赖源码和文档 c)快速编辑项目的基本信息 双击pom.xml->选择overview标签进行编辑 d)查看完整的POM信息 双击pom.xml->选择EffectivePOM标签进行编辑 f)...坐标与依赖坐标与依赖? 1、坐标 Maven的世界中拥有数量非常巨大的构件,为了很方便的找到对应的构件, Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐 标,如: <!--POM模型的版本:对于maven2及maven3来说,它只能是4.0.0--> <modelVersion>4.0.0</modelVersion> <!--包名:项目类型.开发者.项目名--> <groupId>com.hsu.showcase</groupId> <!--模块名:以般以项目名做前缀,如果是总模块可直接使用项目名--> <artifactId>showcase-example</artifactId> <!--版本:当前版本及类型--> <version>0.0.1-SNAPSHOT</version> <!--打包类型:jar、war、pom--> <packaging>jar</packaging>坐标与依赖坐标与依赖? 2、三方构件依赖 1)常用依赖配置:

<dependency><groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${quartz.version}</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency>坐标与依赖坐标与依赖? 2、三方构件依赖

2)常用的依赖配置说明 a)groupId、artifactId和Version: 依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的, Maven根据坐标才能找到需要的依赖。 b)version <version>${quartz.version}</version>,这里使用了表达式,以变量 形式引用,方便以后的包升级管理。需要在之前指定属性: <properties> <quartz.version>2.1.7</quartz.version> </properties>坐标与依赖坐标与依赖? 2、三方构件依赖

2)常用的依赖配置说明 c)scope,依赖的范围: a)compile,编译依赖范围。默认的依赖,编译、测试、运行都有效。 b)test,测试依赖范围。在编译主代码和运行项目时将无法使用此类 依赖,只有在编译测试代码和运行测试代码时才有效,如JUnit。 c)provided,已提供的依赖范围。在运行时无效,如servlet-api。 d)runtime,运行时依赖范围。在编译时无效,如JDBC驱动。 e)system,系统依赖范围。使用systemPath显式指定依赖文件路径 d)exclusions 依赖排除(不需要写version),解决包依赖问题的最佳方式!坐标与依赖坐标与依赖? 3、自定义模块依赖

1)学习Spring构件,养成模块化开发的思想和习惯。

2)模块依赖示例(在showcase-example里依赖showcase-util自定义模块): <dependency> <groupId>${project.groupId}</groupId> <artifactId>showcase-util</artifactId> <version>${project.version}</version> </dependency>

注:a)在依赖自定义模块之前最好先cleaninstall安装到仓库! b)Maven内置隐式变量:${project.xxx}

c)传递性依赖。showcase-util生成的jar及依赖的包(compile级别) 也会在showcase-example里出现。坐标与依赖坐标与依赖? 4、Maven内置隐式变量 1)${basedir} 项目根目录 2)${project.build.directory} 构建目录,缺省为target 3)${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes 4)${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} 5)${project.packaging} 打包类型,缺省为jar 6)${project.xxx} 当前pom文件的任意节点的内容坐标与依赖坐标与依赖? 5、传递性依赖的依赖调解两个原则 Maven引入的传递性依赖机制,大大简化和方便了依赖声明,大部分情况下 我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什 么传递性依赖。但有时候,当传递性依赖造成问题的时候,我们就需要清楚 地知道该传递依赖是从哪条依赖路径引入的: 1)项目A有这样的依赖关系:A->B->C-X(1.0)和A->D-X(2.0) 原则一:间接依赖且不同层次时,路径最近者优先! 2)项目A又有这样的依赖关系:A->B-X(1.0)和A->C-X(2.0) 原则二:间接依赖且相同层次时,第一声明者优先! 注:如果对依赖把控不是很好,建议使用排除(exclusions)不必要的依赖!聚合与继承聚合与继承? 1、聚合:一次构建多个项目

1)为了能够使用一条命令就能构建多个模块,我们需要额外创建一个带 POM的Maven项目作为聚合项目,并包含相应的模块。如下: <modelVersion>4.0.0</modelVersion> <groupId>com.hsu.showcase</groupId> <artifactId>showcase</artifactId> <version>1.0.0-SNAPSHOT</version> <!--聚合项目的packaging为pom--> <packaging>pom</packaging> <!--构建时控制台显示的名称,如不指定默认为artifactId--> <name>showcase</name> <!--指定包含的模块--> <modules> <module>showcase-util</module> <module>showcase-example</module> </modules>聚合与继承聚合与继承? 1、聚合:一次构建多个项目

2)子模块存放规则

a)Hierarchical

showcase |showcase-util |showcase-example

在showcase的pom.xml里,<modules>配置如下: <modules> <module>showcase-util</module> <module>showcase-example</module> </modules> 注:一般我们使用些种方式去创建聚合,能直观看到层级结构!聚合与继承聚合与继承? 1、聚合:一次构建多个项目

2)子模块存放规则 b)Flat showcaseshowcase-util showcase-example

在showcase的pom.xml里,<modules>配置如下: <modules> <module>../showcase-util</module> <module>../showcase-example</module> </modules>聚合与继承聚合与继承? 2、继承:一次声明,多处使用

1)创建一个继承 a)父模块 在showcase下创建一个名为showcase-parent的子目录,作为公共配置的父模 块,并在此父模块下创建一个pom.xml文件,如下: <modelVersion>4.0.0</modelVersion> <groupId>com.hsu.showcase</groupId> <artifactId>showcase-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <!--跟聚合模块一样,作为父模块,其打包类型必须为pom--> <packaging>pom</packaging> <name>showcase-parent</name> 注:也可以把父模块当做聚合模块!聚合与继承聚合与继承? 2、继承:一次声明,多处使用

1)创建一个继承 a)子模块 再使用showcase-example继承父模块,如下: <modelVersion>4.0.0</modelVersion> <!--子模块隐式继承了父模块的groupId、version,所以在这里没有声明!--> <parent> <groupId>com.hsu.showcase</groupId> <artifactId>showcase-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <!--Maven默认父POM在上一层目录下--> <relativePath>../pom.xml</relativePath> </parent> <artifactId>showcase-example</artifactId> <packaging>war</packaging>聚合与继承聚合与继承? 2、继承:一次声明,多处使用

2)继承的依赖管理 a)父模块 <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.20</version> </dependency> </dependencies> </dependencyManagement> 聚合与继承聚合与继承? 2、继承:一次声明,多处使用

2)继承的依赖管理 b)子模块 <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> </dependency> </dependencies> 注:子模块依赖时,依赖版本由父模块统一控制!聚合与继承聚合与继承? 2、继承:一次声明,多处使用

3)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论