使用Maven构建项目
目录
7.使用Maven构建项目
7.1.程序员的忧伤
- 我和同事使用不同的IDE开发,每次互相导项目,更新项目,都费老半天劲了
- 每次从SVN checkout项目,因为jar包太多,都得OUT半天。
- 项目使用的jar包版本每次下载和升级好麻烦,得自己寻找jar包的下载地址,找到了不一定能下,下载下来版本不一定对。
- 刚换了一家公司,发现公司创建的项目结构怎么那么奇葩,和我们原来的项目习惯大大的不一样。
7.2.Maven的使命
将编辑交给IDE,剩下的由Maven来管
- IDE解耦
- 统一jar包资源路径
- 版本管理
- 统一项目结构
- 第三方良好的集成
下载地址
http://maven.apache.org/
使用maven
新建一个文件夹 (非系统盘) 创建一个文件夹 jarbao , 这个jarbao 文件夹转门放 jarbao
7.3.历史延革
属性 | 值 |
---|---|
版本 | 3.6.0 |
全称 | Maven |
开发者 | Apache |
7.4.安装
解压即可使用:
如果直接使用IDEA,该步骤可以省略
变量名:M2_HOME
或者 MAVEN_HOME
PATH:
检测: mvn -v
7.5.目录结构
目录 | 作用 |
---|---|
${basedir} | 存放 pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的 java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说 property文件 |
${basedir}/src/main/webapp | web项目的根目录 |
${basedir}/src/test/java | 项目的测试类,比如说 JUnit代码 |
${basedir}/src/test/resources | 测试使用的资源 |
${basedir}/target | 存放打包后的项目文件 |
7.6.Maven项目操作命令
作用 | 命令 |
---|---|
编译项目 | mvn:compile |
测试项目 | mvn:test |
打包项目 | mvn:package |
安装项目 | mvn:install |
这些命令在哪用呢
每次安装需要记代码,idea 给了非常方便的操作
如果有坐标,右边的 maven 中没有 就是没用把 jarbao 引用到项目中
7.7.使用IDEA创建Maven项目
创建项目:
目录结构:
创建 mave 项目实例
注意 maven 构建项目需要网
所以我们使用 Java Enterprise
Artifact 一般不用改 改Name 项目名称 时 Artifact 会一起改
Group 改一下
这里就可以看到我们设置的东西
用 maven 创建出来的项目的结构都是一样的
7.8.仓库
7.8.1.Maven仓库
仓库:用来存放 下载+发布
7.8.2.运作流程
配置文件更改
更改idea 默认 maven 位置
点击应用 会自动下载
如果项目报错
idea 里面点刷新, 就可以了
我们创建项目每次都要设置,太麻烦,所以使用下面的方法就可以创建项目时设置
7.9.pom.xml
属性名称 | 说明 |
---|---|
modelVersion | 协议版本 |
name | 公司名称 |
url | 公司地址 |
dependencies | 依赖集合 |
dependency | 依赖 |
scope | 作用域 |
version | 版本号 |
packaging | 打包类型 jar包,war包,pom聚合 |
build | 打包执行的插件 |
添加 mysql
没有这个包怎么办呢,就去官网下
这个网址不好找建议设为书签
找高版本,找使用次数最多的
这里报错 有可能是 阿里的服务器没有这个 bao
那就换第二个使用做多的版本
这里换版本号,刷新可继续下载
注意有些报错是因为网络的原因,可以换网解决
原来的
换版本或者换网 刷新后
他会自动添加到库目录里面
不用自己添加
jstl 同理
7.9.1.scope作用域
属性名称 | 说明 |
---|---|
compile | 默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布。 |
provided | 跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。 |
runtime | 表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。 |
test | 表示dependency作用在测试时,不作用在运行时。只在测试时使用,用于编译和运行测试代码。不会随项目发布。 |
system | 跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。 |
7.9.2.version配置
属性名称 | 说明 |
---|---|
SNAPSHOT(快照版本) | 动态监测 非稳定版本 |
RELEASE(正式版本) | 根据版本号监测 版本号一致则不更新 稳定版本 |