• JAVA maven


    Maven基础

    Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
    POM(Project Object Model):项目对象模型。
    项目对象模型(POM)需要加载pom.xml来确定项目,每一个pom.xml对应一个项目,依赖管理和项目对象模型是双向操纵的。依赖管理最终都是从中央仓库调用。
    在这里插入图片描述
    只有中间蓝色这一块是maven,蓝色内是不可以替换的,外部是可以替换的。
    蓝色部分有一个蓝色虚线,虚线下方是插件,这个是maven写好的。

    maven的作用
    项目构建:提供标注的,跨平台的自动化项目构建方式。
    依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题。
    统一开发结构:提供标注的,统一的项目结构。
    maven:https://maven.apache.org/download.cgi
    需要配置MAVEN_HOME环境变量 配置好之后测试
    在这里插入图片描述

    基础概念

    仓库:用于存储资源,包含各种jar包
    仓库分类:
    本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    远程仓库:非本机电脑上的仓库,为本地仓库提供资源
    中央仓库:maven团队维护,存储所有资源的仓库
    私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
    私服的作用:
    保存具有版权的资源,包含购买或自主研发的jar
    中央仓库中的jar都是开源的,不能存储具有版权的资源
    一定范围内共享资源,仅对内部开放,不对外共享。

    坐标

    maven中的坐标用于描述仓库中资源的位置
    https://repo1.maven.org/maven2/
    maven坐标主要组成
    groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
    artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM,SMS)
    version:定义当前项目版本号
    maven坐标的作用
    使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。

    仓库配置

    进入maven安装目录conf文件夹下面,有一个settings.xml配置文件
    在这里插入图片描述
    默认存放位置在用户.home/.m2/repository
    改为咱们自己创建的
    在这里插入图片描述

      D:\maven\repository
    
    • 1

    远程仓库配置
    在这里插入图片描述

    <mirror>
       <!--配置具体的仓库的下载镜像 -->
        <mirror>
          <!-- 此镜像的唯一标识符,用来区分不同的mirror元素  -->
          <id>maven-default-http-blocker</id>
          <!-- 对哪种仓库进行镜像,简单说就是替代哪个仓库 -->
          <mirrorOf>external:http:*</mirrorOf>
          <!-- 镜像名称 -->
          <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
          <!-- 镜像URL  ->
          <url>http://0.0.0.0/</url>
          <blocked>true</blocked>
        </mirror>
    </mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    全局setting与用户setting区别
    全局setting定义了当前计算机中Maven的公共配置
    用户setting定义了当前用户的配置

    第一个Maven项目

    主程序

     package com.h0ne;
    
    public class Demo{
               public String say(String name){
                          System.out.println("hello" + name);
                          return "hello"+name;
               }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    测试代码

    package com.h0ne
    
    import org.junit.Test;
    import org.junit.Assert;
    
    public class DemoTest{
               @Test
               public void testSay(){
                         Demo d = new Demo();
                         String ret = d.say("maven");
                         Assert.assertEquals("hello maven",ret);
               }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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/maven-v4_0_0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
      
      <groupId>com.h0ne</groupId>
      <artifactId>project-java</artifactId>
      <version>1.0</version>
      <packaging>jar</packaging>
    
      <dependencies>
          <dependency>
              <groupId>javax.el</groupId>
              <artifactId>el-api</artifactId>
              <optional>true</optional>
              <version>4.12</version>
          </dependency>
      </dependencies>
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    Maven项目构建命令
    Maven构建命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分割

      mvn compile #编译
      mvn clean #清理
      mvn test #测试
      mvn package #打包
      mvn install #安装到本地仓库
    
    • 1
    • 2
    • 3
    • 4
    • 5

    mvn compile #编译 第一次会很慢 第二次就快很多了
    在这里插入图片描述
    在这里插入图片描述

    mvn package出现了报错
    在这里插入图片描述
    mvn package -Dmaven.test.skip=true
    用这个命令就好了
    在这里插入图片描述
    mvn install -Dmaven.test.skip=true 打包成功
    在这里插入图片描述
    插件创建工程
    创建工程

      mvn archetype:generate
        -DgroupId={project-packaging}
        -DartifactId={project-name}
        -DarchetypeArtifactId=maven-archetype-quickstart
        -DinteractiveMode=false
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建java工程

    mvn archetype:generate
        -DgroupId=com.h0ne
        -DartifactId=java-project
        -DarchetypeArtifactId=maven-archetype-quickstart
        -Dversion=0.0.1-snapshot 
        -DinteractiveMode=false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建web工程

    mvn archetype:generate
        -DgroupId=com.h0ne
        -DartifactId=web-project
        -DarchetypeArtifactId=maven-archetype-webapp
        -Dversion=0.0.1-snapshot
        -DinteractiveMode=false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • 相关阅读:
    Pytorch框架学习记录1——Dataset类代码实战
    Java实现业务异步的几种方案
    周老师话职称(陕西省职称申报好处)
    【性能测试】Action.c(6): Error -26612
    CrossOver2023Win电脑软件操作在Mac、Linux系统运行教程
    全球地表水数据集JRC Global Surface Water Mapping Layers v1.4
    leetcode891:子序列宽度之和
    Linux网络通信(TCP套接字编写,多进程多线程版本)
    消除springboot+thymeleaf时页面的红色波浪线告警
    智能晾衣架(一)--设计
  • 原文地址:https://blog.csdn.net/qq_53142368/article/details/127945231