maven笔记(1)

**

1. Maven概念
Maven是目前市场上最流行的包管理工具、项目构建工具。
通过maven可以管理整个项目从创建、开发到编译、测试、打包、发布的整个流程,进行标准化开发。
特别是通过依赖机制可以优雅的解决项目开发中包的依赖问题,大大简化了项目开发、管理流程。
Maven基于项目对象模型(POM)概念,利用中央信息片段管理一个项目的构建,生成,报告等等步骤;是目前最主流的项目构建工具。 maven并不是市场上唯一的项目构建工具,但是是目前最流行的项目构建工具。 常见的项目管理工具: ANT 最早的项目构建工具之一,目前很少再使用 Maven 目前最主流的项目构建工具,使用非常广泛 Gradle 目前比较新颖的项目构建工具,相对Maven在进行大项目管理时性能更好

2.Maven的基本概念
a. 库(repository)
maven使用库的概念来管理项目资源。
maven库又分为本地库和远程库,远程库可以细分为中央库、镜像库(代理库)和私服。
i. 中央库
指的是maven官方管理维护的库,是全世界最大的maven仓库,管理着大量的资源。
ii. 镜像库(代理库)
为了分摊中央库的访问压力、为了使全世界不同地区的用户都可以有较好的下载体验,除了中央库,全世界范围内还有多镜像库存在,镜像库可以认为是对中央库全部或部分资源的拷贝,全世界开发者可以选择去连接速度最优的镜像库获取资源。
国内比较知名的maven镜像库有网易镜像库和阿里镜像库。
iii. 私服
公司或个人也可以利用maven的机制搭建在一定范围内使用的类似中央库的库,在一定范围内管理项目资源,这样的库只在一定范围内起作用,且不一定和中央库互通,这样的库称之为私服库。
iv. 本地库
在当前机器内部保存资源的库。
maven在工作时优先从本地库寻找资源,如果找不到就去从配置的镜像库或私服或中央库中自动下载资源,下载的资源保存在本地库中,以便于重复使用。

3. 库中的资源定位
在maven库中管理着大量的资源,如何唯一的标识这些资源是一个基本的问题。maven中是通过资源的坐标地址来解决这个问题的。

<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RLELEASE</version>

其中 groupId:指定项目名称
artifactId:指项目下某一模块名称(jar包名称)
version:指版本信息

4.Maven的安装配置
a. 下载 :http://maven.apache.org/download.cgi
b. 安装:
i. 安装好jdk
maven3.6以上的版本至少需要jdk8,配置好JAVA_HOME环境变量。
ii. 安装maven
解压maven到任意目录,注意目录路径中不要出现中文或空格。
iii. 配置环境变量
配置MAVEN_HOME环境变量指向maven的安装目录
MAVEN_HOME:D:\software\maven3.6
配置PATH环境变量指向maven安装目录中的bin目录
path:%JAVA_HOME%\bin;%MAVEN_HOME%\bin
iv:cmd中通过:mvn -version 可知是否成功。
v. 配置maven
maven的核心配置文件是conf/settings.xml
在正式使用maven之前需要配置这个文件主要需要指定本地库和镜像库的地址

	<!--配置本地库-->  
<localRepository>D:\\mvn_repo</localRepository>
				
  <!--配置镜像库-->
   <mirrors>
	<!--配置阿里镜像库-->   
     <mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
  </mirrors>

	v. **解压ali_repo到本地仓库			
  1. maven的使用
    可以利用maven管理项目的整个生命周期,这是通过maven的不同命令来实现的。
    a. 创建项目 mvn archetype:generate
    i. 进入要创建项目的目录,执行命令mvn archetype:generate
    ii. 提示要求选择创建项目的程序骨架
    默认提供了十种,我们目前知道两种即可
    所谓项目的骨架指的是项目的不同的结构,不同项目往往是具有不同的结构的,例如基本的java项目和javaweb项目的结构就是不同的,在使用mvn创建这些项目时通过指定不同的骨架来创建出不同结构的项目。
    1) 提示选择创建项目要使用的骨架
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive co
ntains): 7: 
			2)普通java项目
7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archet
ype which contains a sample Maven project.)
			
			3) 普通web项目
10: internal -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype
 which contains a sample Maven Webapp project.)
		iii. 要求输入groupId
			通常情况下,groupid要以公司域名的倒写形式来声明
			Define value for property 'groupId':cn.tedu
		iv. 要求输入artifactId:
			Define value for property 'artifactId':MVNDemo01
		v. 要求输入version:
			Define value for property 'version' 1.0-SNAPSHOT:
		vi. 要求输入package:
			Define value for property 'package' MVNDemo01: :
		vii. 检查信息并确认:
			 Y: :
		viii. 创建出的项目结构
				MVNDemo01
				|-src
							|-main
								|-java --> 主程序代码
								|-resources --> 主程序的资源文件(主要是配置文件)
							|-test
					|-java -->测试代码
		 			|-resources -->测试程序的资源文件(主要是配置文件)
				|-target-->目标文件夹,src/main和src/test下的资源处理过后产生的文件存放在此处
				|-pom.xml -->当前项目的maven核心配置文件
	
b.mvn compile
	会自动导入pom文件中指定的依赖。
	会将当src/main目录下的源码和资源编译后存放到target/classes下。
	**注意,test文件夹下的所有内容在编译,打包,安装过程都不参加,但是会参加测试过程。
c. mvn test
	通过此命令可以执行test文件夹下的测试用的内容,实现项目测试
	首先会将src/test目录下的源码和资源编译后存放到target/test-classes下,之后执行其中的测试代码,输出测试结果到控制台,同时测试结果保存一份到target/surefire-reports中
					d. mvn clean
		清理mvn命令,此命令可以清除target文件夹,在其他mvn命令执行之前,通常都建议大家先执行一次mvn clean,这样可以将之前其他操作产生的结果清除,防止对本次执行的命令产生影响。
	e. mvn package
		打包命令,会将编译完成的资源打包成指定格式(jar包/war包),具体怎样打包取决于pom.xml文件中的配置
		如下配置指定了项目打成什么样的包:
			<packaging>jar</packaging>
		mvn package命令同时隐含了编译 测试 打包过程,建议在执行此命令之前最好先执行一次mvn clean 防止之前其他命令产生target内容影响此次命令执行的结果。
	f. mvn install
		maven项目安装,这会将打包好的包及其相关的资源文件存放到本地库中由maven进行管理,成为了maven所管理的一个资源。
		maven install命令会隐含进行编译 测试 打包 安装,建议在执行此命令之前最好先执行一次mvn clean 防止之前其他命令产生 的target影响此次命令执行的结果。
	g. mvn deploy
		maven项目发布,将maven本地库中管理的资源发布到远程库中。
		但是无论是中央库还是镜像库都不允许随意上传部署,所以无法在中央库和镜像库中实现这个过程。
		但是如果是自己搭建的私服,是可以通过这个过程完成资源发布的。
	h. 真实开发过程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值