- 配置 maven的 环境变量
- maven项目目录----->>>
- maven的使用
- 包的依赖关系
- complie
- test
- runtime
- provided
Maven 的主要目标是让开发人员在最短的时间内了解开发工作的所有状态。为了实现这一目标,马文涉及几个令人关切的领域:
使构建过程变得简单
提供统一的构建系统
提供高质量的项目信息
鼓励更好的发展做法
去官网下载适合的maven
这里用到的是3.8.3版本;
下载之后解压,将文件放到一个合适的目录,我是放在了
之后开始配置maven,maven跟java一样,都需要有一个path的环境变量----
注意---->>在配置maven之前一定要配置好java环境变量;
检查一下java环境变量----->>>
配置 maven的 环境变量在配置maven时,你可以可建一个MAVEN_HOME, path中引用MAVEN_HOME的方式也可以
在path环境变量下添加maven配置,目标位maven的bin目录
配置完之后检查配配置是否成功-----
在控制输入 mvn -v,如果有反应,说明配置成功
虽然配置成功了,但是由于是第一次配置,还需要一些其他依赖文件,在控制台输入–
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
注意,这会在你本地用户文件夹下创建一个maven项目,找起来比较麻烦,所以建议自己指定一个文件夹来存放maven项目,
你也可以模仿我这么操做----
控制台进入D:Program FilesmavenProjects文件夹,然后执行上方命令
这个操做会从官网下载一些依赖以及一些配置文件,执行成功会有 BUILD SUCCESS提示;
同时检查
出现my-app说明操做成功,至此maven安装与配置就结束了;
生成目标创建了my-app名称目录。。
cd my-app
根据此目录,您将注意到以下标准项目结构。
my-app
|-- pom.xml
-- src |-- main |– java
| -- com |– mycompany
| -- app |– App.java
-- test– java
-- com– mycompany
-- app– AppTest.java
目录包含项目源代码,目录包含测试源,文件是项目的项目对象模型(POM)
最后说一下如何让卸载maven,由于不是直接安装的maven,所以
卸载起来很简单------>>
1,环境变量中删除maven配置,
2,删除maven所在文件
3清理maven仓库-----即项目存放的地方
maven中一些常用的命令
构建项目
mvn package
这需要在pom.xml所在文件夹下执行,要不然会提示找不到pom.xml文件错误;
打包好之后控制台会提示----
这是我们打包好的jar文件位置所在D:mavenProjectsmy-apptargetmy-app-1.0-SNAPSHOT.jar
用以下命令测试新编译和打包的 JAR:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
mvn clean dependency:copy-dependencies package
此命令将清理项目、复制依赖项并打包项目(当然,执行所有阶段到包)。
生成站点
mvn site
要了解maven是什么,首先得分析一下我们传统写java项目的时候 ,我们经常会导入一些依赖包,比如jdbc驱动,jstl标签库,log4j等等,将他们放在classpath中,虽然这些工作难度不大,但是比较繁琐;
maven针对这个问题专门位java项目的开发提供了一套管理和构建工具;
提供了一套标准化的项目结构;
提供了一套标准化的构建流程(编译,测试,打包,发布……);
提供了一套依赖管理机制。
Maven项目结构
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
a-maven-project —项目名
├── pom.xml – 项目描述文件
├── src —项目根目录
│ ├── main
│ │ ├── java —java源码存放处
│ │ └── resources —资源文件
│ └── test —测试项目的目录
│ ├── java—java源码存放处
│ └── resources —资源文件
└── target 编译,打包好的文件存放处
pom.xml文件分析
groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupId,artifactId和version作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。
通过上述3个变量,即可唯一确定某个jar包。Maven通过对jar包进行PGP签名确保任何一个jar包一经发布就无法修改。修改已发布jar包的唯一方法是发布一个新版本。
因此,某个jar包一旦被Maven下载过,即可永久地安全缓存在本地。
以上是maven本地加载的一些核心包名
,如果要使用的包,那么需要配置依赖-----
commons-logging commons-logging 1.2
使用声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。
那maven是从哪里下载我们需要的依赖包呢?
首先maven维护了一个仓库,基本上所有的依赖包都会上传到这个仓库,这个就不需要我们关心了;
那有一个小细节,我们怎么知道对应的 以及 呢?
我们可以通过maven仓库 来搜索关键字 搜索得到上面三个信息—
Maven Central Repository Search
从maven的官方仓库下载一些依赖包会比较慢,一般是使用ALIYUN的仓库替代官方仓库
使用Maven镜像仓库需要一个配置,在用户主目录下进入.m2目录,创建一个settings.xml配置文件,内容如下:
aliyun aliyun central https://maven.aliyun.com/repository/central
上述三个元素指向一个项目的特定版本,让 Maven 知道当在其软件生命周期中,我们正在处理哪个项目;
配置好后接下来就是maven的一些基础知识
包的依赖关系在java中,maven解决的是有关包的依赖关系,
在maven中定义了几种依赖关系---->>>
complie 这说明编译时需要用到该jar包 例如 commons-logging
test 在测试环境下 需要用到该jar包 例如junit
runtime 编译时不需要,但是运行时需要用到 例如 jdbc驱动
provided 编译时需要用到,但运行时由某个JDK或者某个服务器提供 例如 某个servlet
complie是最基本的也最常用 ,maven会将这种类型的依赖直接放入classpath
testruntimejunit junit 4.11 test
providedmysql mysql-connector-java 8.0.27 runtime
javax.servlet javax.servlet-api 4.0.0 provided
maven会对开发版的项目中的一些依赖每次都会重新下载依赖,在maven中以SNAPSHOT结尾的版本号会被视为开发版本,这种SNAPSHOT版本只能用于内部私有的Maven repo,公开发布的版本不允许出现SNAPSHOT
在配置好maven环境时候,下载的资源中已经为我们准备好一个项目—myapp,我们可以通过这个来测试一下一些常用命令—
mvn -v ----查看maven版本以及JDK和系统版本
mvn package -----打包项目
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App ---- 运行项目
运行项目的命令解析—
java -cp
target ----项目存放相对地址 ,也可以写项目绝对地址不过要把证地址准确性
my-app-1.0-SNAPSHOT.jar —jar包名
com.mycompany.app----包名即 pom.xml中配置的groupId
.POM 型号版本(始终为 4.0.0)。
.项目所属的团体或组织。通常表示为倒置域名。
.要给项目图书馆文物起的名字(例如,其 JAR 或 WAR 文件的名称)。
.正在构建的项目版本。
- 应如何包装项目。JAR 文件包装的默认"jar"。使用"war"进行war文件包装。
实践出真知…加油
maven中各个文件夹的含义–见名知意



