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包到本地 这里本地我们以及自定义位置了
<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.0modelVersion>
<groupId>cn.itcast.mavengroupId>
<artifactId>HelloartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>Helloname>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8maven.compiler.encoding>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.9version>
<scope>testscope>
dependency>
dependencies>
project>
在eclipse中 <artifactId>就是项目的名字
as是保存到仓库中时的根目录
可以理解为 <groupId>是公司 <artifactId>是具体的项目
而不是类的路径
之前喜欢把包名当<groupId> 类名当<artifactId>
其实两者并不关联
举例:
<groupId>asgroupId>
<artifactId>11artifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
这里不是填包名
它是以项目为操作单位 最后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中的
关于:<scope>testscope> <scope>compilescope>
测试时才有效 编译时就有效
还可以连用 mvn clean compile
外部应用项目的话 pom配置:
<dependency>
<groupId>asgroupId>
<artifactId>11artifactId>
<version>0.0.1-SNAPSHOTversion>
<scope>compilescope>
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 不然就会 是使用原来的 会报错
注意:
会先从本工作区寻找被依赖的项目 如果没找到再去仓库
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>D:/apache-maven-3.5.4/mvn_repo/repositorylocalRepository>
默认是 jdk1.5
修改的文件:
D:\apache-maven-3.5.4\conf\setting.xml
修改jdk配置:添加jdk1.8
<profile>
<id>developmentid>
<activation>
<jdk>1.8jdk>
<activeByDefault>trueactiveByDefault>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
配置Eclipse:
注意:
全局配置(global settings )
本台电脑的配置,使用这台电脑的所有用户都是用这个配置
个人配置(user settings)
当前用户的配置
个人配置(user settings )会覆盖全局配置(global settings)
Eclipse与Maven配合提供了强大的jar组件集成功能.
更新Maven库的索引文件
说明:Mavne索引用于搜索jar组件”坐标”, 更新索引以后就可以在Eclipse中搜索jar组件”坐标”, 但这个功能不是必须的
参考:
eclipse配置 maven