• 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%in
    
    • 测试成功与否和查看版本
    mvn -v 
    
    $ mvn -v
    Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
    Maven home: e:javaapache-maven-3.5.2
    Java version: 1.8.0_162, vendor: Oracle Corporation
    Java home: c:Program FilesJavajdk1.8.0_162jre
    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:UsersAdministrator.m2
    epository
    下载第三方插件和maven依赖的jar
    
    

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

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

    编译的时候做了哪些事

    1. 仓库下载了很多依赖
    2. 项目根目录下生成了target文件夹
    • classes 字节码文件夹(targetclassescomoneboimodel0Hello.class
    • maven-status 状态文件夹(targetmaven-statusmaven-compiler-plugincompiledefault-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>
    
  • 相关阅读:
    maven插件安装与使用
    java面试题
    关于java的GC
    技术人员要树立自己的品牌
    为什么IT公司都应该鼓励开源
    你应该坚持写博客 即使没有读者
    计算机基础
    收藏 | 产品经理不可不知的 7 种技术思维
    我讨厌你公事公办的样子
    子序列问题【LIS、LCS、LCIS】
  • 原文地址:https://www.cnblogs.com/oneboi/p/8316563.html
Copyright © 2020-2023  润新知