一、初识Maven
maven是一款软件工程构建工具,它可以对多项目进行有效的管理。
1.1、安装maven
1.1.1安装文件目录说明
1.1.2设置环境变量path
1.1.3修改本地仓库目录
修改maven目录下conf中的settings.xml
默认是在C:\Users\Administrator\.m2\repository中。
1.2、创建一个简单的maven项目
1.2.1创建项目
mvn archetype:create -DgroupId=com.zefu.app -DartifactId=TestMaven 回车(DartifactId可以理解为项目名称,DgroupId可以理解为包名),
如果你是首次运行该命令,maven将要花一些时间去把最新的工具包(Maven 把它叫作artifacts)下载到你的本地仓库。 下载的数据默认放在C:\Users\Administrator\.m2\repository目录下。
命令执行完后你将看到maven生成了一个名为TestMaven 的目录,这个名字就是你在命令中指定的DartifactId,进入该目录,你将发现以下标准的项目结构:
src/main/java:源代码
src/test/java:测试代码
src/main/resources:源代码的资源文件
src/test/resources:测试代码的资源文件
pom.xml是项目的项目对象模型(Project Object Model or POM)。 pom.xml:
1.2.2 maven项目常用mvn命令
mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理)
mvn clean compile-->表示先运行清理之后运行编译,会见代码编译到target文件夹中
mvn clean test-->运行清理和测试
mvn clean package-->运行清理和打包
mvn clean install-->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用
mvn clean deploy-->运行清理和发布(发布到私服上面)
以上面例子来看:
进入到项目路径,输入 mvn package 回车这时命令行将会打印出各种动作,并且以下面一段信息结束:
执行命令完后可以看到项目中多了一个些东西
java -cp target/TestMaven-1.0-SNAPSHOT.jar com.zefu.app.App
这时将打印出最经典的: Hello World
1.3 myeclipse集成maven
1.3.1 myeclipse配置maven环境
1.3.2 创建maven项目
二、Maven依赖
2.1 依赖包的查询
所有的依赖都是通过坐标来进行存储的(GAV-->groupId、artifactId、version)
有一些网上的仓库提供了坐标的查询(http://search.maven.org/#browse
、http://mvnrepository.com)
maven是如何搜索依赖的?首先会在本地仓库查询如果本地仓库没有,就去中央仓库查询(后面还会有一个私有服务器仓库)
2.2 依赖的传递性
A-->C B-->A ==> B-->C(这种依赖是基于compile这个范围进行传递)
比如:
user-vo项目中依赖于hibernate-core,
user-dao项目依赖于user-vo
那么user-dao就会依赖于hibernate-core,也就是user-dao在pom.xml中不用把hibernate-core加进去,他自己去会依赖进去了。
2.3 依赖冲突
a-->b1.0 c-->b1.1 d-->a和c,这个时候在d的pom.xml中,哪一个依赖先写就使用先写依赖的版本。
如:
user-vo依赖log4j-1.2.16,user-log依赖log4j-1.2.9,user-dao依赖user-vo和user-log,那么user-dao是依赖log4j-1.2.16还是log4j-1.2.9呢?--哪一个依赖先写就使用先写依赖的版本。
a-->b1.0 c-->b1.1 d-->a和c-->b1.0 f-->d,c,如果路径的长短不一致就选择最小路径
f-->b1.1
如果希望精确的控制依赖包,可以使用依赖的排除功能进行控制
2.4 依赖的范围
test:范围指的是测试范围有效,在编译和打包时都不会使用这个依赖
compile:范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
provided:依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突
system:引用本地的jar包
runtime:在运行的时候依赖,在编译的时候不依赖
import : 从其它的pom中导入dependency的配置
默认的依赖范围是compile
2.5 版本管理
总版本号.分支版本号.小版本号-里程碑版本
总版本号的变动一般表示框架的变动
分支版本号:一般表示增加了一些功能
小版本号:在分支版本上面进行bug的修复
里程碑:SNAPSHOT-->alpha-->beta-->release-->GA
user0.0.1-SNAPSHOT-->user0.0.1-Release--->user1.0.0SHAPSHOT -->user1.0.0-Rlease
-->user0.1.0-SNAPSHOT-->user0.1.0-Rlease
三、maven仓库
首先会在本地仓库查询,如果本地仓库没有,就去私有服务器仓库查询,如果私有仓库服务器没有,就去中央仓库查询。把查询到的结果下载到私有服务器仓库和本地仓库。所以至少要保证私有服务器是要有网络的。
3.1 私有服务器仓库
3.1.1安装私有服务器仓库
nexus(linux和windows都有,有兴趣的可以自己去装)
http://192.168.11.253:8081/nexus/index.html#welcome
默认登陆名:admin 默认密码:admin123
3.1.2私有服务器仓库介绍
1. host的仓库。内部项目的发布仓库
2.proxy的仓库。从远程中央仓库中寻找数据的仓库
3.group组仓库。组仓库用来方便开发人员进行设置的仓库,可以设置为其他仓库的一个集合。
3.1.3私有仓库设置
设置镜像:
在maven安装文件的conf目录的settings.xml中配置
3.1.4 发布项目到私有服务器仓库
在pom.xml中设定snapshotsa工厂和releases工厂
在settings.xml中设置访问权限
nexus私有服务器有提供三个默认的用户
admin拥有一切权限,deployment具有上传的权限,anonymous具有查看的权限。
3.1.5 创建项目工厂和设置权限
1.创建两个工厂
2.为工厂配置权限
3.创建角色并分配权限
4.创建用户分配角色
5.创建发布的工厂
pom.xml中设置
settings.xml中设置
3.1.6 上传jar包到第三方依赖仓库
四、生命周期和插件
4.1 生命周期
mvn clean install
validate:验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources:生成所有需要包含在编译过程中的源代码
process-sources:处理源代码,比如过滤一些值
generate-resources :生成所有需要包含在打包过程中的资源文件
process-resources:复制并处理资源文件至目标目录,准备打包
compile:编译项目的源代码
process-classes:后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
generate-test-sources:生成所有包含在测试编译过程中的测试源码
process-test-sources:处理测试源码,比如过滤一些值
generate-test-resources:生成测试需要的资源文件
process-test-resources:复制并处理测试资源文件至测试目标目录
test-compile:编译测试源码至测试目标目录
test:使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
prepare-package:在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现)
package:将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR
pre-integration-test: 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
integration-test:如果有必要的话,处理包并发布至集成测试可以运行的环境
post-integration-test:执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
verify:执行所有检查,验证包是有效的,符合质量规范
install:安装包至本地仓库,以备本地的其它项目作为依赖使用
生命周期是依赖插件来做的。
4.2 maven插件
五、搭建linux的maven私有服务器仓库(nexus)
1把安装包拷到usr/java目录下
2解压nexus tar -zvxf nexus-2.5.1-01-bundle.tar.gz
3需要在/usr/java/nexus-2.5.1-01/bin/jsw/linux-x86-32 (当前系统版本,注意操作系统位数)下的nexus文件在中约20行处加入RUN_AS_USER=用户名(用户名如root用户)
4 启动nexus cd到/usr/java/nexus-2.5.1-01/bin/jsw/linux-x86-32目录下,再./nexus start命令启动nexus。./nexus status 检查nexus启动状态,./nexus stop停止nexus。
5访问nexus http://192.168.230.130:8081/nexus出现界面如图:
如果访问不到需要关闭linux防火墙
1) 永久性生效,重启后不会复原
开启:chkconfig iptables on
关闭:chkconfig iptables off
2) 即时生效,重启后复原
开启:service iptables start
关闭:service iptables stop
六、附录
1、http://wentao365.iteye.com/blog/903396
2.、http://b-l-east.iteye.com/blog/1246482
3、查找jar包:http://search.maven.org/#browse
http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2.5.0
4、如何查找jar包:http://blog.csdn.net/xuexin25java/article/details/7967086
5、linux环境搭建maven nexus服务器:
http://wenku.baidu.com/link?url=HVfdref5vGBzWDwexmY-u6KC_N5fC8YKu7IIUOCyjWb75izkhA6McM08SUsqETlzYKd7TXn1TXEPjUM8_s4rI53H08RCzhC9Q7cVpVrqZPC
http://blog.csdn.net/liu_xing_hui/article/details/7246029
6、配置Maven项目自动部署到tomcat上:
http://blog.csdn.net/hecongqi/article/details/8013598
Maven build... Goals: tomcat:deploy
http://www.blogjava.net/zyl/archive/2006/12/30/91055.html
http://maven.apache.org/repository/index.html
由于有些图片看到不到的原因,可以下载附件里面有一个doc文档,可以看到。
相关推荐
### 黑马Maven笔记第二天知识点总结 #### Maven的核心优势 **1. 统一管理JAR包** - **节省空间**:Maven通过中央仓库管理所有项目的依赖,避免了重复下载相同JAR包的问题,有效减少了硬盘空间的占用。 - **依赖...
### 黑马Maven笔记详解 #### Maven简介与特点 Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理...
Maven的安装: (首先保证JDK版本在1.6以上) 1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2...
### Maven核心知识点解析 #### Maven概述与价值 Maven是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者可以轻松地处理项目中的多个痛点问题,提升开发效率。 #####...
【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...
【标题】"maven笔记t-JavaWeb"主要聚焦于Java Web开发中Maven的使用,这是一套关于Maven的教程,旨在帮助开发者理解和掌握这个强大的构建工具。Maven是Apache软件基金会的一个项目,它简化了Java项目的构建、管理和...
** Maven 概述 ** Maven 是一个强大的项目管理和构建工具,主要应用于Java项目。它通过提供一套标准化的构建过程,使得项目的...通过学习Maven笔记,开发者可以更好地掌握这一强大的工具,提升项目开发的专业水平。
【Maven笔记】 Maven是一个强大的Java项目管理工具,它主要解决了在软件开发过程中遇到的一系列问题,如依赖管理、项目构建以及环境一致性等。通过使用Maven,开发者可以更高效地管理和构建Java项目,避免手动复制...
**Maven笔记(2)-- 构建Java Project 及 Maven命令使用** Maven是Apache组织开发的一个项目管理和综合工具,主要用于Java项目构建、依赖管理和项目信息管理。它通过一个统一的构建过程,使得项目的构建变得简单且...
**Maven笔记** Maven是Apache组织开发的一款Java项目管理工具,它的主要功能包括项目构建、依赖管理和仓库管理。Maven使得Java开发更加规范和高效,尤其在大型团队协作中,能够有效地解决版本冲突和自动化构建的...
【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...
压缩包中的"笔记"和"资料"文件可能包含更深入的Maven教程、最佳实践、常见问题解答和案例研究等内容。学习这些资料有助于提升你在实际项目中的Maven应用能力,解决遇到的问题,并优化构建流程。 综上所述,Maven是...
maven学习笔记maven学习笔记maven学习笔记
** Maven详解:构建Java项目的专业工具 ** Maven是一个基于项目对象模型(Project Object Model,POM)的概念,用于管理并构建Java项目。它通过一个简单的配置文件(pom.xml),自动化项目的构建、报告和依赖管理,...
Maven笔记,内包含Maven核心程序解压和配置,命令行环境,IDEA环境,jar包3下载失败问题的解决方案
Maven 是 Java 项目中一种流行的构建工具,能够帮助开发者更好地管理项目依赖关系、编译、打包和发布。下面是 Maven 的一些知识点: 1. Maven 的必要性:Maven 之所以需要,是因为在没有 Maven 之前,开发者需要...
【Maven笔记1】—— Maven入门 Maven是一款强大的Java项目管理和构建工具,它解决了传统项目构建中的诸多痛点,使得Java开发变得更加规范和高效。在本文中,我们将深入探讨Maven的基本概念、功能以及如何解决上述...