maven
maven是一个项目管理工具,不仅可以把源代码构建为可以发布的项目(包括 编译、打包、测试、分发),还可以生成报告、生成web站点。
一、下载与安装
Maven 官方下载地址:http://maven.apache.org/download.cgi,进入下载页面,找到下载文件
二、配置环境变量
创建MAVEN_HOME写maven根目录
path编辑:%MAVEN_HOME%\bin
注意:当项目比较大时,使用Maven生成项目需要占用大量内存,如果超过Java默认的最大可用内存,则会报java.lang.OutOfMemeoryError。 解决此问题为设置MAVEN_OPTS环境变量,此方法一次设定,一劳永逸,为推荐方法。
MAVEN_OPTS环境变量设置方法:在环境变量中添加一个新变量名为MAVEN_OPTS,值为-Xms128m -Xmx512m(数值可以自定义,Xms为初始内存,即最小内存,Xmx为最大内存)
三、验证
cmd mvn - version
四、maven仓库
在 Maven 的术语中,仓库是一个位置。软件开发中不可避免的需要引入大量的第三方库,这些库所在的位置在Maven中被称为 “仓库” 。 在 Maven 中任何一个依赖、插件或者项目构建的输出,都可以称之为 “构件” 。Maven 仓库能帮助我们管理构件(主要是JAR)。
Maven 仓库有三种类型:
- 本地仓库(local):顾名思义就是本地本机放置构件的地方。Maven 从远程仓库下载下来的构件都存放在本地仓库中,项目可以从本地 Maven 仓库中获取自己所依赖的文件。
- 中央仓库(central):Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。
- 远程私服(remote):私服一般是指公司内部使用的仓库。运行 Maven 时,Maven 所需要的任何构件都是从本地仓库获取的,但是如果本地仓库没有,它就会尝试从远程仓库中下载构件到本地仓库。如果 Maven 无法连接到远程仓库,将无法正常构建项目。
使用 Maven 给我们带来的最直接的好处就是统一管理 Jar 包。那么这些 Jar 包存放在哪里呢?它们就在你的本地仓库中,默认地址位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址)。
实际上,我们可以将本地仓库理解为 “缓存”,目的是存放 Jar 包。开发项目时首先会从本地仓库中获取 Jar 包,当无法获取指定 Jar 包的时候,本地仓库会从远程仓库(或中央仓库)中下载 Jar 包,并 “缓存” 到本地仓库中以备将来使用。这样一来,本地仓库会随着项目的积累越变越大。
五、本地仓库
Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
<settings>
<localRepository>自定义位置</localRepository>
</settings>
六、中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
中央仓库由 Maven 社区管理,不需要配置,但需要通过网络才能访问。
七、远程私服仓库
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 Jar 文件。
八、maven依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
九、修改配置
Maven会将下载的类库(Jar 包)放置到本地的一个目录下,如果想重新定义这个目录的位置就需要修改 Maven 本地仓库的配置。需要修改settings文件
<localRepository>D\repository</localRepository>
依据该配置,Maven 就会将下载的类库保存到 D\repository 中。
配置阿里云镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf>
</mirror>
配置全局编译jdk版本
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
验证一下我们刚才做的事情是否产生作用,请在控制台中输入:
mvn help:system
mvn archetype:generate -DinteractiveMode=false -DgroupId=org.fkjava -DartifactId=mavenQs -Dpackage=org.fkjava.mavenqs
执行完该命令之后,在 D\repository下面就会多出很多文件,这些文件就是 Maven 从中央仓库下载到本地仓库的文件,Maven 已经开始为我们工作了。
maven创建、构建一个简单的项目
插件archetype
配置完毕
Maven中的库是个物理概念,存放各种依赖 Jar,而 ClassPath 是个逻辑概念,指定所依赖 Jar 的可见性。
十、maven标准目录
src
|--main
|--java 源代码目录
|--resources 资源目录
|--test
|--java 测试代码目录
|--resources 测试资源目录
|--target
|--classes 编译后的class文件目录
|--test-classes 编译后的测试class文件目录
pom.xml Maven工程配置文件