前言:
Maven解决项目的依赖,在线下载jar包到本地。
来一张图显示:
仓库地址:
https://mvnrepository.com/
流程:
项目根据pom.xml的jar包,从外导入jar顺序:
工作空间-->本地仓库-->私服仓库-->Maven中心仓库
maven 软件目录 :
1.lib :共享库。maven软件依赖的lib jar包
2.boot :plexus-classworlds-2.5.1.jar
该文件是jar包下载的引擎 ,通过该工具来下载第三方项目依赖的jar包
- maven本身的软件构建的生命周期插件的jar包,默认是没有集成这些插件 如:清除插件 --编译插件 -- 打包插件
-
3.conf: maven 配置文件
C:\apache-maven-3.2.1\conf\settins.xml
配置的是本地仓库地址 以及服务器的验证
4.bin
maven 可执行的命令
mvn 命令
Maven项目的结构都是一定的 ,这样才方便操作。
约定项目结构:
- 按maven规约的目录结构,创建java项目
Hello项目
- src
---main
---java
---包和类
包: cn.it
类:Demo
---resources
---test
---java
---resources
- target : 该文件夹可有可无,
是编译src后的输出文件的目录,没有则自动创建
- pom.xml : (project ojbect model):项目对象模型 ,
它是maven核心配置文件
注意:
src中 main对应着普通代码
test对应着测试代码
生命周期:
clean compile test package install deploy
clean 清空target 无法清空仓库中install的文件
compile 编译 main 添加target中的main的class
test 编译 添加target中的main的class和test的class
从中心仓库或者私服下载测试要用到jar包到本地仓库
package是在test的基础上将他们打包 先执行 test然后打包
install是将打包的内容上传到本地的仓库中 不包括test测试代码
刚开始用的时候需要下载插件 所有会比较慢
使用test的时候就会从中央仓库中 下载需要的jar包到本地 这里本地我们以及自定义位置了
pom.xml配置文件:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--组id
maven 用坐标概念来标识 jar包
坐标=groupId+artifactId+version
-->
<groupId>cn.itcast.maven</groupId>
<!--构建物id :产品id-->
<artifactId>Hello</artifactId>
<!--版本 :SNAPSHOT :测试版本 ,镜像版本 release :发行版本,最终版本-->
<version>0.0.1-SNAPSHOT</version>
<!--发布的是jar包 ,默认是jar包,也可以使war包等-->
<packaging>jar</packaging>
<!--项目名称 ,可写可不写-->
<name>Hello</name>
<properties>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 编译时的编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
<dependencies>
<!--jar包声明式依赖 依赖 junit4.9jar包-->
<dependency>
<!--用坐标来标识jar包: 坐标=groupId+artifactId+version -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<!--依赖的jar包的使用范围 : 当测试时使用该jar包
test 、 compile(默认)
-->
<scope>test</scope>
</dependency>
</dependencies>
</project>
在eclipse中 <artifactId>就是项目的名字
as是保存到仓库中时的根目录
可以理解为 <groupId>是公司 <artifactId>是具体的项目
而不是类的路径
之前喜欢把包名当<groupId> 类名当<artifactId>
其实两者并不关联
举例:
<groupId>as</groupId>
<artifactId>11</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<groupId>
这里不是填包名
它是以项目为操作单位 最后install上传到仓库的时候才有用
用到的jar也是应用于整个项目
install打包上传后 就是在仓库中的as文件下的11文件下的 0.0.1-SNAPSHOT文件下有
11- 0.0.1-SNAPSHOT.jar文件 即打包好的jar包
但是里面没有test测试文件
pom.xml中的两个标签:没用过
plugins配置
用于指定使用的插件
pom.xml 中的build
标签是用于配置 pom 的,
相当于 pom 的 configuration,主要用于:
1、定义(或声明)项目的目录结构
2、使用maven的插件(maven plugins)。
总结:
pom.xml中的<dependencies>是对整个项目进行配置
关于:<scope>test</scope> <scope>compile</scope>
测试时才有效 编译时就有效
- 流程就是用到需要什么jar包或者项目引用先去仓库中寻找 ,如果找到了就直接用 找不到就到中心仓库再下载到本地
- 如果一个项目引用别的项目类 先把该项目install上传到本地才行 测试代码的class文件不会 然后compile编译的时候 会先去本地寻找
还可以连用 mvn clean compile
外部应用项目的话 pom配置:
<dependency>
<groupId>as</groupId>
<artifactId>11</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
这是定位到仓库的 as文件下的11文件下的0.0.1-SNAPSHOT文件下 相当于在项目中引用了该类的jar包 然后需要用到的地方直接:import org.hello; 那个jar包内的 路径+类名即可
eclipse中 如果一个maven引用另一个maven 先配置pom 然后 先关闭close被引用的项目 ,这个时候 maven Dependencies就会出现
被引入的文件 而且显示是来自仓库
间接依赖:
倚赖的jar包必须是compile范围 如果是test范围 刚发布的jar包不会包含test范围依赖的jar包
所以 要在被引用项目的pom修改junit test 为compile 其实默认就是compile
依赖项目可以不用写junit配置 直接写 被引用项目即可
每次被依赖的项目 被修改后要install 不然就会 是使用原来的 会报错
注意:
会先从本工作区寻找被依赖的项目 如果没找到再去仓库
Eclipse配置Maven
第一步配置path:
PATH: D:\apache-maven-3.5.4\bin
判断是否配置成功?
cmd:mvn -v
结果显示如下则表示成功
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: D:\apache-maven-3.5.4\bin\..
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_181\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
第二步配置本地仓库:
默认存放地址:
C:\Users\蒋家聪\.m2\repository
修改的文件:
D:\apache-maven-3.5.4\conf\setting.xml
我们来修改自定义存放地址:添加地址
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!--配置本地仓库路径-->
<localRepository>D:/apache-maven-3.5.4/mvn_repo/repository</localRepository>
第二步配置Maven jdk版本:
默认是 jdk1.5
修改的文件:
D:\apache-maven-3.5.4\conf\setting.xml
修改jdk配置:添加jdk1.8
<profile>
<id>development</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</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>
配置Eclipse:
注意:
全局配置(global settings )
本台电脑的配置,使用这台电脑的所有用户都是用这个配置
个人配置(user settings)
当前用户的配置
个人配置(user settings )会覆盖全局配置(global settings)
第三步:Eclipse中搜索添加Jar组件”坐标”
Eclipse与Maven配合提供了强大的jar组件集成功能.
更新Maven库的索引文件
说明:Mavne索引用于搜索jar组件”坐标”, 更新索引以后就可以在Eclipse中搜索jar组件”坐标”, 但这个功能不是必须的
参考:
eclipse配置 maven