maven 学习笔记1

maven是优秀的项目管理和构建工具,能让我们更为方便的来管理和构建项目.

没有它会怎么样
自己下载jar包 管理依赖呗.(自己下载的jar放在lib目录)

和它类似的还有那些
ant gradle

maven和ant的区别
maven 和 ant 关注于项目的管理与构建。maven 中加入了依赖管理,ant偏重于项目的构建,更灵活定制更好,总之各有优劣,具体根据项目的规模,项目的构建方式来选择。

一、maven 是什么

maven是什么基于项目对象模型(pom)可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

类似npm 的东西。项目移植的时候不会因为环境而不一样。因为声明了依赖。

用它来更有效的管理项目,它也是一套自动化的管理工具,覆盖了我们的编译,测试,清理,打包和部署等整个项目构建的周期。它提供了一个叫仓库的概念。统一的帮我们管理项目所依赖的第三方架包。最大可能的避免由于环境的配置的不同所产生的差异。

二、下载和安装

  • 下载

maven.appache.org

  • 配置环境变量:
   M2_HOME=E:\apache-maven-3.3.9
   Path=%M2_HOME%\bin
  • 测试成功与否和查看版本
mvn -v 

$ mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: e:\java\apache-maven-3.5.2
Java version: 1.8.0_162, vendor: Oracle Corporation
Java home: c:\Program Files\Java\jdk1.8.0_162\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

能够查看到maven、java、系统版本号就说明安装成功了

三、目录结构:

bin     包含mvn脚本 m2.conf配置文件
boot    类加载器的框架 使用这个jar加载类库(maven的类库加载机制)
config  配置文件    settings.xml经常用到
lib     maven运行时所有的类库,除了自己的还有第三方以来的类库

四、maven 项目结构

src
    ├─main
    │  └─java
    │      └─package (java文件)
    └─test
    │   └─java
    │        └─package(Java文件
    ├─resources

pom.xml

  • main目录 项目的主的目录(必要的)
  • test目录 项目的测试目录 (必要的)
  • resources 资源目录 (简单的可以不要)

五、第一个例子(代码有问题,看最后)

  • 写main文件
package com.oneboi.maven01
public class Hello {
    public String say(){
        return  "hi";
    }
}
  • 写test文件
package com.oneboi.maven01
import org.junit.*;
import org.junit.Assert*;
public class TestHello {
    @Test
    public void testHello(){
        Assert.sssertEquals("hello world", new hello().say());
    }
}
  • 写pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>

<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>
    <groupId>com.oneboi</groupId>
    <artifactId>maven01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>   
    </dependencies>
</project>


六、pom.xml 说明

1. <modelVersion>:maven版本。固定
2. <groupId>:项目的包名。项目所在位置
3. <artifactId>:模块名。
4. <version>:0.0.1SNAPSHOT快照版本
<project> //声明项目
<dependencies> //声明依赖
    <dependency>
    </dependency>
</dependencies>
</project>

七、运行项目(编译主程序

1. 进入根目录(src同级目录,pom.xml同级)

2. 编译主程序

mvn compile 

编译的时候本地目录下载了很多依赖的包

本地仓库,编译的时候自动生成 : 

C:\Users\Administrator\.m2\repository
下载第三方插件和maven依赖的jar

编译的时候会去下载程序所需要的包和依赖

编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时

编译的时候做了哪些事

  1. 仓库下载了很多依赖
  2. 项目根目录下生成了target文件夹
  • classes 字节码文件夹(target\classes\com\oneboi\model0\Hello.class
  • maven-status 状态文件夹(target\maven-status\maven-compiler-plugin\compile\default-compile)

3.运行单元测试

 mvn test 

运行应用程序中的单元测试target目录生成test-classes和surefire-reports文件夹

  1. 测试程序字节码放在test-classes下
  2. surefire-reports文件夹下面存放是的所生成的测试报告

4.打包程序

mvn package 

会在target目录下生成一个maven01-0.0.1-SNAPSHOT.jar和maven-archiver目录

为什么是这个名字
pom.xml中定义的

    <artifactId>maven01</artifactId>
    <version>0.0.1-SNAPSHOT</version>

正确的代码:

main

package com.oneboi.model01;
public class Hello {
    public String say(){
        return  "hssssssssi";
    }
}

test:

package com.oneboi.model01;
import org.junit.*;
import org.junit.Assert.*;
public class HelloTest {
    @Test
    public void testHello(){
         Assert.assertEquals("hssssssssi",new Hello().say());
         
    }
}
│  pom.xml
│  
└─src
    ├─main
    │  └─java
    │      └─com
    │          └─oneboi
    │              └─model01
    │                      Hello.java
    │                      
    └─test
        └─java
            └─com
                └─oneboi
                    └─model01
                            HelloTest.java
<?xml version="1.0" encoding="UTF-8"?>

<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>
    <groupId>com.oneboi</groupId>
    <artifactId>maven01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>   
    </dependencies>
</project>
posted @ 2018-01-19 13:58  金于虎  阅读(426)  评论(0编辑  收藏  举报