博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven learn note (01)
阅读量:5326 次
发布时间:2019-06-14

本文共 3549 字,大约阅读时间需要 11 分钟。

# Maven learning note (0)
 
 
吐槽博客与的markdown笔记体验
[TOC]
## 0, maven 存在的意义
1.1、假如你正在Eclipse下开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?
很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar包即可。所以这里也如此,可以将B项目打成jar包,然后在A项目的Library下导入B的jar文件,这样,A项目就可以调用B项目中的某些类了。
这样做几种缺陷,如果在开发过程中,发现B中的bug,则必须将B项目修改好,并重新将B打包并对A项目进行重编译操作,在完成A项目的开发后,为了保证A的正常运行,就需要依赖B(就像在使用某个jar包时必须依赖另外一个jar一样),两种解决方案,第一种,选择将B打包入A中,第二种,将B也发布出去,等别人需要用A时,告诉开发者,想要用A就必须在导入Bjar包。两个都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖B的其它项目,B已经存储到本地了,在导入A的jar包的话,就有了两个B的jar),后者是我们常遇到的,找各种jar包,非常麻烦(有了maven就不一样了)
 
1.2、我们开发一个项目,或者做一个小demo,比如用SSH框架,那么我们就必须将SSH框架所用的几十个依赖的jar包依次找出来并手动导入,超级繁琐。 
    
上面两个问题的描述,其实都属于项目与项目之间依赖的问题[A项目使用SSH的所有jar,就说A项目依赖SSH],人为手动的去解决,很繁琐,也不方便,所以使用maven来帮我们管理
so
**Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具**
## 1, maven 的安装
**official website:http://maven.apache.org/**
![下载](img/maven_download.png)

 

1. 安装后设置环境变量 %M2_HOME% 为刚刚的文件目录
2. 添加环境变量路径,刚刚安装目录下的bin文件夹, 在cmd下mvn -v查看测试安装是否成功
1 ```dos2 C:\Users\cwl>mvn -v3 Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)4 Maven home: F:\maven_learn\lib\apache-maven-3.6.0-bin\apache-maven-3.6.0\bin\..5 Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_191\jre6 Default locale: zh_CN, platform encoding: GBK7 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"8 ```

 

## 2, maven 初步
[官方教程](http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)
### maven 目录结构
    my-app
    |-- pom.xml
    `-- src
        |-- main
        |   `-- java
        |       `-- com
        |           `-- mycompany
        |               `-- app
        |                   `-- App.java
        `-- test
            `-- java
                `-- com
                    `-- mycompany
                        `-- app
                            `-- AppTest.java
### maven 的 pom.xml
核心配置文件,在该目录下的 pom.xml, 在boot的jar里面
`plexus-classworlds-2.5.2.jar\META-INF\maven\org.codehaus.plexus\plexus-classworlds`
默认的pom.xml东西比较多,官方上有一个简单的模板
 
1 ```xml 2 
4
4.0.0
5 6
com.mycompany.app
7
my-app
8
1.0-SNAPSHOT
9 10
11
1.7
12
1.7
13
14 15
16
17
junit
//包名18
junit
//项目名19
4.12
20
test
21
22
23
24 ```

 

 
### maven 仓库
maven会在本地`C:\Users\cwl\.m2` 用户目录下创建一个本地仓库,存一些jar包
可以在在`$MAVEN_HOME/conf/setting.xml`里面修改,我们可以在里面找到如下说明
另外还有第三方仓库,中央仓库等概念,这里先不提。
1 ```xml2   
8 ```

 

 
### 下面是一个 maven 运行一个基础程序的例子
首先建立如下目录的文件夹
![maven_dir](img/maven_dir.png)
 

 

 
 
1 ```xml 2 // pom.xml 3 
5
4.0.0
6 7
com.imooc.maven01
8
maven01-model
9
0.0.1-SNAPSHOT
10 11
12
13
junit
14
junit
15
4.12
16
17
18
19 ```

 

文件夹结构要与包结构一致, 注意pom.xml和src目录同级
pom.xml与src在同一目录下,然后在src, pom.xml 目录下打开cmd
输入 `mvn compile` 执行编译命令
第一次会下载很多依赖的包, 要等一等
![build_success](img/build_success.png)
 

 

输入 `mvn test` 会执行测试用例
发现编译的错误会在test的时候输出, 少了分号
![test_error](img/test_error.png)
 

 

修改测试成功后
![test_success](img/test_success.png)
 
 

 

输入 `mvn package` 会打包一个jar包
和src目录同级别的jar包

转载于:https://www.cnblogs.com/Q1143316492/p/10279443.html

你可能感兴趣的文章
LoadRunner对移动互联网后端服务器压力测试
查看>>
hibernate 的POJO状态
查看>>
ORM
查看>>
大话数据结构 -07-2 图的遍历
查看>>
HDU3729--I'm Telling the Truth
查看>>
使用handler时的warning:This Handler class should be static or leaks might occur
查看>>
简单截图功能实现
查看>>
spring
查看>>
ssh三大框架,三层架构 整合测试!完整分页代码,JdbcTemplate等测试,存储过程调用,留着以后复习吧...
查看>>
Haskell 笔记(四)函数系统
查看>>
[置顶] 安卓UI组件之ListView详解
查看>>
测试项目测试计划
查看>>
控件事件android中自定义控件
查看>>
我的目标在哪里——一个程序员的规划
查看>>
CUDA: 流
查看>>
go语言 documentation
查看>>
碧砚适合佳能328 4452 ICD520 4472 4450 硒鼓4700一体机墨盒4770
查看>>
Wait statistics, or please tell me where it hurts
查看>>
pxc 集群
查看>>
Cobra —— 可视化Python虚拟机 and 图解python
查看>>