前提:----------------------------------------------------------------------------------------------------------------------------java
project : Maven
description : Maven是基于项目对象模型(POM),能够经过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。web
--------------------------------------------------------------------------------------------------------------------------------------
一,如何使用maven构建项目
1,下载和安装maven
MAVEN_HOME : "maven的安装目录"
path : %MAVEN_HOME%\bin
2,新建一个pom.xml文件,在该文件写上相应的配置
*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>apache
<groupId>cn.water.maven.hello</groupId>
<artifactId>hello-first</artifactId>
<version>SNAPSHOT-0.0.1</version>api
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>tomcat
</project>
* 其中最重要的元素节点就是GAV--(groupId,artifactId,version)
项目坐标
groupId------------------用啦表示项目的名称
artifactId---------------用来表示项目的模块,建议使用项目的名称-模块名称 such as : crm-userGroup
versionId----------------项目的版本号
3,创建相应的工程目录,不过格式严格要求以下
pom.xml
src
main
java------------------------java源代码
resources-------------------源文件的资源目录,(hibernate.cfg.xml,applicationContext.xml)
test
java------------------------工程的测试代码
resources-------------------测试工程所用到的资源目录文件服务器
4,执行mvn compile 命令app
* 这个时候maven就会从中央仓库中下载相应的jar包(保存到.m2的文件夹中),可是能够设置本地的仓库
* 设置下载到本地仓库的本地目录,打开settings.xml文件
找到<localRepository>D:/Java/maven</localRepository>里面的内容能够根据本身的想要防止的地方
可是这里的文件要conf/文件下的setttingsmaven
5,archetype骨架式地构建本身的项目
5.1 : 新建一个目录放置咱们的工程:mkdir 03
5.2 : 切换到刚刚新建的03目录下,执行 mvn archetype:generate
5.3 : 后面的根据提示来创建咱们的工程ide
二,正式进入maven的学习
1,maven整体上能够分为三个部门
* 依赖
* 仓库
* 生命周期和插件工具
三,依赖
1,依赖包的查询
* 全部的依赖都是经过坐标来进行存储的(GAV-->groupId,artifactId,version)
* 有一些网上的仓库提供了查询
* 什么叫传递性依赖
依赖是会被传递的----------可是只是做用于compile
若是咱们新建一个项目,这个项目主要是放置PO对象,可是使用到hibernate核心的jar包,
因此当咱们再新建一个项目的时候,须要依赖前面的一个项目,因此咱们要导入这个项目,可是与此同时,hibernate的jar包
也会相应的导入进来。
1,test 范围指的是测试范围有效的,在编译和打包时都不会使用这个依赖 2,compile范围指的是编译范围有效的,在编译和打包时会将依赖存储进去 3,provided依赖,在编译和测试过程有效,最后生成war包时不会加入,诸如, serviet-api,由于servlet-api,tomcat等web服务器已经存在了,若是再打包回冲突 3,runtime在运行的时候依赖,在编译的时候不会依赖。