Maven3应用入门讲座

合集下载

Maven实战_Maven的安装、配置及使用入门

Maven实战_Maven的安装、配置及使用入门

《Maven实战》是国内第一本公开出版的Maven专著。

它内容新颖,基于最新发布的Maven 3.0,不仅详尽讲解了Maven 3.0的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2.x版本进行了对比,以便于正在使用Maven 2.x版本的用户能更好地理解。

本书它内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有读者仔细阅读;系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解了如何Maven和Archetype插件,这部分内容对需要编写插件扩展Maven或需要编写Archetype维护自己的项目骨架以更便于团队开发的读者来说尤为有帮助。

它实战性强,不仅绝大部分知识点都有相应的案例,而且本书还在第4章设计了一个背景案例,后面的很多章节都是围绕这个案例展开的,可操作性极强。

本书适合所有Java程序员阅读,无论你是从未使用过Maven,亦或是已经使用Maven很长一段时间了,相信你都能从本书中获得有价值的参考。

本书也适合所有项目经理阅读,它能帮助你更规范、更高效地管理Java 项目。

《Maven实战》作者简介:许晓斌(Juven Xu),国内社区公认的Maven技术专家、Maven中文用户组创始人、Maven技术的先驱和积极推动者。

对Maven有深刻的认识,实战经验丰富,不仅撰写了大量关于Maven的技术文章,而且还翻译了开源书籍《Maven权威指南》,对Maven技术在国内的普及和发展做出了很大的贡献。

就职于Maven之父的公司,负责维护Maven中央仓库,是Maven仓库管理器Nexus(著名开源软件)的核心开发者之一,曾多次受邀到淘宝等大型企业开展Maven方面的培训。

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔之Maven的生命周期和插件1.Maven的生命周期Maven的生命周期其实是指它对所有的构建过程进行了反复的推敲、反思,之后总结了一套高度抽象过程。

这个过程是高度完善的、容易扩展的。

基本上包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、、站点生成等步骤,几乎所有的项目生命周期也就这样。

Maven项目周期是一个抽象的概念,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体细节它不管。

具体的实现细节则交给了Maven的各个丰富的插件。

Maven的插件机制有可能是跟Eclipse学的,基于一个内核core,定义一堆流程性的东西,让插件去实现这些规范。

其他组织也可以根据这套规范插入自己的东西,形成有特色化的、自定制的Maven。

Maven有三套相互独立的生命周期,分别是:clean、default、site。

clean主要是清理项目、default是Maven最核心的的构建项目、site是生成项目站点。

每一个大的生命周期又分为很多个阶段。

后面的阶段依赖于前面的阶段,这点有点像Ant的构建依赖。

生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段,也就是说用户调用了default周期的任何阶段,并不会触发clean周期以及site周期的任何事情。

2.Maven生命周期阶段详解3大生命周期蕴含着小小的阶段,我们按顺序看一下clean周期:pre-clean:准备清理clean:真正的清理工作post-clean:执行清理后的一些后续工作default周期:validate:验证initialize:初始化配置generate-sources:生成源代码编译目录process-sources:处理项目主资源文件,复制资源文件到outputclasspathgenerate-resources:生成资源目录process-resources:处理资源文件complie:编译源代码process-classes:处理编译后文件generate-test-sources:生成测试目录process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath generate-test-resources:生成测试资源文件process-test-resources:处理测试资源文件test-compile:编译测试代码process-test-classes:处理测试代码test:单元测试运行测试代码prepare-package:打包前的准备package:将编译好的代码打包成为jar或者war或者ear等等pre-integration-test:准备整体测试integration-test:整体测试post-integration-test:为整体测试收尾verify:验证install:安装到本地Maven库deploy:将最终包部署到远程Maven仓库site周期:pre-site:准备生成站点site:生成站点及文档post-site:站点收尾site-deploy:将生成的站点发布到服务器上就是执行了整个default生命周期这个就是执行了clean周期的前两个阶段、default周期的所有阶段、site周期的所有阶段。

Maven培训教材PPT课件

Maven培训教材PPT课件
</project>
2020/2/20
8
依赖
<project> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.4.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>mons</groupId> <artifactId>commons-lang3</artifactId> <version>3.1</version> </dependency>
Maven原理与实践
2020/2/20
1
大纲
• 何为Maven
– 构建,依赖管理,项目信息聚合
• Maven核心概念
– 坐标,依赖,仓库,生命周期,插件
• Maven最佳实践
– 创建、打包、发布、版本管理
• 项目实战
• Nexus(Todo…)
• M2eclipse(Todo…)

Maven从入门到流畅使用

Maven从入门到流畅使用

Maven从入门到流畅使用1、简介1.1、什么是MavenMaven 是一个项目管理工具,使用Maven高效管理你的Java项目。

Maven包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。

使用Maven的好处jar包管理(使用jar包坐标),解决jar包冲突;可以用来编译代码;可以用来进行测试;进行项目的打包、发布。

1.2、Maven的两个经典作用1.2.1、Maven的依赖管理通过在 pom.xml 文件中添加所需 jar 包的坐标,,在需要用到 jar 包的时候,只要查找pom.xml 文件,再通过 pom.xml 文件中的坐标,在仓库(本地仓库,远程仓库(私服),中央仓库)中找到对应的jar包使用。

maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的。

1.2.2、项目的一键构建构建是指:项目从编译、测试、运行、打包、安装,部署整个过程都交给 maven 进行管理。

一键构建指:整个构建过程,使用 maven 的一个命令就可以轻松完成整个工作。

Maven规范化构建流程如下:maven将项目构建的过程进行标准化,每个阶段使用一个命令完成。

2、Maven使用2.1、Maven安装下载地址:官网下载地址安装:Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下。

maven 的目录结构如下:环境配置maven软件版本测试通过 mvn -v 命令检查 maven 是否安装成功,看到 maven 的版本及 java 版本即为安装成功。

Maven入门与学习

Maven入门与学习

Maven入门与学习Maven可以帮我们解决什么场景问题都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?为什么在我的机器上可以正常打包,而配置管理员却打不出来?项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn 库里吧现在是第三次,再复制一次吧—–这样真的好吗?我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug项目进入测试阶段,每天都要向测试服务器部署一版。

每次都手动部署,太麻烦了Maven的概念maven翻译为“专家”,“内行”。

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

Maven是跨平台的项目管理工具。

主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

Maven的功能:项目构建依赖管理什么是构建为什么使用MavenEclipse手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错Ant没有一个约定的目录结构必须明确让ant做什么,什么时候做,然后编译,打包没有生命周期,必须定义目标及其实现的任务序列没有集成依赖管理Maven拥有约定,知道你的代码在哪里,放到哪里去拥有一个生命周期,例如执行mvn install 就可以自动执行编译,测试,打包等构建过程只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情Maven的模型Maven的安装及配置下载Maven官方网站:本课程使用的maven的版本为3.0.5Maven的安装安装jdk,要求1.6或以上版本解压maven的压缩包。

Maven3教案

Maven3教案
Maven3教案
制作:潘院明
一、用eclipse-jee创建 Web项目
• 1、配置tomcat • TomcatPlugin是一个由Sysdeo公司开发的, 用于在Eclipse中启动和管理Tomcat的一个插 件。 • 真接将插件解压缩到D:\eclipse\plugins文件夹 中
• 2、新建web项目
• 默认情况下Target runtime中的选项值none,我 们需要选择tomcat运行环境,点击New Runtime按钮
• 单击Browse选择tomcat服务器的安装位置,就是 CATALINA_HOME环境变量的路径,然后单击 Finish
3、新建JSP文件
• 其中WebContent就是我们jsp源文件 的存放目录,下面有WEB-INF和 META-INF两个目录,和我们之前的 web应用目录一致 • 注意此时在我们eclipse工作目录下, 就是和项目的同级目录下会出现一个 Servers目录,这个目录就是eclipse 配置运行环境所生成的目录,项目管 理器中也可以看到 。 • 注意,这个目录不要删除,否则程序 不能运行,还需要重建,Server.xml、 web.xml、context.xml等配置文件就 是存在于这个目录下 • 新建一个源文件,在WebContent上 右击,选择"New"->"Jsp File"
创建新的项目 1)File→New→other→ Maven→Maven Project 2)N个Next 写入Group和Artifact工件的名字 Group ID一般写大项目名称。Artifact ID是子项目名称。 例如Spring的web包,Group ID: org.springframework,artifactId: spring-web。 Package是默认给你建一个包,不写 也可以。

maven入门教程

maven入门教程

Maven是一个采用纯Java编写的开源项目管理工具。

Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。

目前Apache下绝大多数项目都已经采用Maven进行管理。

而Maven本身还支持多种插件,可以方便更灵活的控制项目。

1:/download.html 下载最新版本 Maven 3.0.2 (Binary zip)2:解压到 D:3:配置环境变量MAVEN_HOME : D:\apache-maven-3.0.2MAVEN : %MAVEN_HOME%\bin(可选) MAVEN_OPTS : -Xms256m -Xmx512m在path 前面加上 %MAVEN%;4:验证安装是否成功在命令行上输入: mvn -version; 回车,如看到下面信息表示安装成功:5:创建项目在命令行上输入:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 回车,如果你是首次运行该命令(goal),maven将要花一些时间去把最新的工具包(Maven 把它叫作artifacts)下载到你的本地仓库。

命令执行完后你将看到maven生成了一个名为my-app的目录,这个名字就是你在命令中指定的artifactId,进入该目录,你将发现以下标准的项目结构:其中:src/main/java 目录包含了项目的源代码,src/test/java 目录包含了项目的测试代码,pom.xml是项目的项目对象模型(Project Object Model or POM)。

pom.xml 文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息。

《Maven学习基础》课件

《Maven学习基础》课件

Web项目构建
详细说明如何用Maven构建和部 署Web应用程序,包括前端资源 的管理。
Spring项目构建
介绍如何结合Maven构建和管理 基于Spring框架的企业级应用程 序。
Maven的优化和提速
1 Maven的优化策略
学习如何优化Maven构建过程,包括镜像配 置、并行构建和增量编译等。
使用示例
演示如何配置和使用Maven的生命周期和插件,以满足特定的项目需求。
Maven的项目构建
POM文件介绍
学习如何编写POM文件,这是管 理Maven项目的核心配置文件。
父子项目管理
掌握多模块项目的组织方式,实 现代码的复用和管理。
依赖管理
了解如何管理项目的依赖关系, 并正确引入外部库以及版本控制。
2 常见问题及解决ຫໍສະໝຸດ 法探讨常见的Maven问题,如构建缓慢、依赖 冲突等,并提供解决方法。
总结与展望
1 Maven的优缺点
总结Maven的优点和局限性,帮助开发者权衡使用Maven的利弊。
2 未来发展趋势
展望Maven未来的发展,预测可能出现的新特性和趋势。
《Maven学习基础》PPT 课件
# Maven学习基础
技术和工具的选择对学习非常重要。在这个PPT课件中,我们将深入学习 Maven,掌握其基础知识和使用技巧。
什么是Maven
简介
Maven是一个功能强大的项目管理工具,用于构建、发布、管理Java项目。
特点
Maven提供了一套标准化的建议和流程,可以简化项目的构建和维护。
IntelliJ IDEA集成 Maven
展示如何在IntelliJ IDEA中无缝 集成Maven,并进行高效的项 目开发。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


手动添加构件到仓库 mvn install:install-file -Dfile=${jar包文件位置} DgroupId=${groupId} -DartifactId=${artifactId} Dversion=${版本号} -Dpackaging=jar -DgeneratePom=${是 否同时创建pom文件} 复制依赖构件到相应目录 mvn dependency:copy-dependencies DoutputDirectory=${目标目录} -DexcludeScope=${scope} Dsilent=true 示例: mvn dependency:copy-dependencies -DoutputDirectory=WebRoot/WEB-INF/lib -Dsilent=true -DincludeScope=runtime
Maven仓库
• 本地仓库
Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下 管理,通常默认在$user.home/.m2/repository下。 自Maven2以后,构件的存储方式通常是 groupId/artifactId/version/*.jar 修改本地库位置:在$M2_HOME/conf/setting.xml文件的 <localRepository>元素中指定路径,例如:


显示一个插件的详细信息(configuration, goals等):
mvn help:describe -Dplugin=pluginName -Ddetail
pom.xml
• 是Maven项目的核心配置文件,位于每个工程的根目录,指示 Maven工作的元数据文件。 • 节点介绍 <project > :文件的根节点 . <modelversion > : pom.xml使用的对象模型版本 . <groupId > :创建项目的组织或团体的唯一 Id. <artifactId > :项目的唯一 Id, 可视为项目名 . <packaging > :打包类型,一般有JAR,WAR,EAR 等 <version > :产品的版本号 . <name > :项目的显示名,常用于 Maven 生成的文档。 <url > :组织的站点,常用于 Maven 生成的文档。 <description > :项目描述,常用于 Maven 生成的文档。
• 小试Maven命令
mvn help:system 该命令将会下载help插件并运行它,且打印出Java系统属性和环境变量
Maven名词解释
• • • Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义 为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程; 一个工程也可以由多个子工程构成。 POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件, 类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。 GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。 groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出 来。 Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源 文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库 (见Repository)中,否则Maven无法找到 (识别)它们。 Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在 Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的 artifact。 Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供 goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的 Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。 Repository:仓库。




setting.xml
• $user.home/.m2/repository/setting.xml
为用户范围的配置文件
• $M2_HOME/conf/setting.xml
为全局范围的配置文件,修改后将影响本机所有用户的配置
建议:只修改用户级别的配置,既不影响其它用户,也不影响后期升级。
• 创建Web项目 mvn archetype:create -DgroupId=${packageName} -DartifactId=${webappName} -DarchetypeArtifactId=maven-archetype-webapp • 创建其它项目(例如SSH、JPA、JSF、Seam…) mvn archetype:generate 然后根据提示选择项目骨架、groupid、artifactid、版本号… Maven3已有上百个项目骨架 • 转换成Eclipse工程 mvn eclipse:eclipse
Maven3应用入门讲座 应用入门讲座
Power by Howsun zhangjihao@
传统开发回顾
• • • • • • 收集依赖构件到CLASSPATH 编写源代码、配置信息 JavaC编译 经常遇到哪些问题? 单元测试 严重依赖IDE? 产品打包、发行 代码共享、储存,以及版本控制
• 配置介绍
localRepository: 自定义本地库路径,默认在$user.home/.m2中 interactiveMode: offline:是否每次编译都去查找远程中心库 pluginGroups:插件组,例如org.mortbay.jetty proxies:通过代理访问外部库 servers:集成认证服务,例如集成Tomcat mirrors:镜像库,可以指定内部中心库 profiles:个性配置,需要在Activation标签中激活 activeProfiles:表示激活的profile
• 开发者通过 开发者通过Maven管理项目从中受益 管理项目从中受益: 管理项目从中受益
指导开发:提供了Java项目的最佳开发实践,自由开发 项目骨架而可自动生成项目结构。 自动编译:不仅仅只像Ant自动编译,还包括测试,打包, 发布,文档生成,项目站点生成…… 依赖管理:Maven可以方便地管理应用程序依赖,例如第 三方依赖、模型依赖 无限扩展:插件模式可以无限增强Maven功能,例如通过 Tomcat、Jetty插件可以自由控制其服务器。 持续集成:鼓励开发者积极提交代码,更早地发现程序错 误,在并行开发中稳妥推进。 开发协作:更简单和谐的团队协作
Maven仓库
• 远程公用仓库
Maven内置了远程公用仓库:/maven2 这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了 世界上大部分流行的开源项目构件。目前是以java为主。
• 内部中心仓库
也称私有共享仓库(私服)。一般是由公司自己设立的,只为本公司内部 共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库 镜像缓存,减少在外部访问和下载的频率。 Nexus和Artifactory均可搭建仓库服务器。但后者支持LDAP认证, 这样就可以将私有仓库的认证集成到公司已经有的LDAP认证服务器。 内部中心库又可以连接第三方库,例如Jboss中心库、Spring中心库, 以随时获得最新版本的第三方构件。
mvn eclipse:clean //清除Eclipse设置信息
• 转换成idea项目: mvn idea:idea
• • • •
• •

编译 mvn compile 编译测试代码 mvn test-compile 产生Site: mvn site 测试 mvn test //运行测试 mvn test -Dtest=${类名} //单独运行测试类 清除 mvn clean //将清除原来编译的结果 打包 mvn package mvn package –Dmaven.test.skip=true //打包时不执行测试 发布 mvn install //将项目打包成构件安装到本地仓库 mvn deploy //发布到本地仓库或服务器(例如Tomcat、Jboss)
Maven监管项目生命周期
几个重要的过程: 几个重要的过程: compile:编译 test: 测试 package:打包 instaen版本
• Maven2完成了对Maven1的重写。重写的首要 目的是要提供了强大的Java构建和包含API的 项目,允许Maven被植入任何地方,尤其是高 级别的产品如IDEs、质量工具、报告工具等 这些。Maven2构建生命周期的概念正式化, 其比Maven更易扩展; • Maven3在2.x基础上大幅提升性能。可以自 动指定父版本,并行生成,更好的完整性报告、 多语言生成、更好地支持M2Eclipse… • 我们要使用Maven3
Maven安装
• 下载安装包
地址:/download.html 当前版本为3.0
• Windows系统下安装:
首先需要确认系统中装有JDK(版本1.4+); 将压缩包解压到本地磁盘某目录中,该目录则称为安装目录。 例如 D:\opensource\apache-maven-3.0 目录结构: bin Maven的运行脚本 boot Maven自己的类装载器 conf 该目录下包含了全局行为定制文件setting.xml lib Maven运行时所需的类库 ...
主要内容
Maven介绍、安装、常用命令 Eclipse下Maven项目开发 坐标与依赖 多模型开发 常用插件和自动化部署 内部仓库使用 生成站点 Maven高级主题
相关文档
最新文档