首页 > 其他分享 >Maven--Maven的核心概念

Maven--Maven的核心概念

时间:2023-09-10 17:57:11浏览次数:29  
标签:maven target 编译 -- 核心 jar Maven 仓库 目录

一、maven核心概念

  1、Maven工程约定目录结构

  2、pom文件

  3、仓库

  4、Maven的生命周期

  5、Maven的常用命令

  6、插件

  7、坐标(gav)

  8、依赖(dependency)

二、maven约定的目录结构

三、maven项目创建及其下载的东西

1、使用命令编译maven项目

  在和pom.xml平级的文件夹下打开cmd命令窗口,运行该命令mvn complile,可以编译src/main目录下所有的java文件

  第一次下载的话比较慢,当资源下载完成之后,以后使用就会很快了

2、下载的东西

  a)之后maven会开始下载东西

    maven工具执行的操作需要很多插件(java类--jar文件)完成的,都是下载一些jar文件,叫做插件,插件是完成某些功能

  b)下载的东西存放

    一般存放到默认仓库(本机仓库):C:\Users\Administrator(登录操作系统的用户名)\.m2\repository

     https://repo.maven.apache.org :中央仓库的地址

  c)在根目录生成target目录

    target目录为结果目录,maven编译的java程序,最后的class文件都放在target目录中

3、修改本地仓库地址(设置本机存放资源的目录位置)

  a)修改maven的配置文件settings.xml,maven安装目录/conf/settings.xml

    先备份 settings.xml(备份一份完整的防止)

  b)打开settings.xml文件,修改 <localRepository> 标签中的,指定你的目录(不要使用中文目录)

    D:\mavenwork\repository

  c)设置下载资源的镜像(下载jar包时更快)

    打开settings.xml文件,找到<mirrors></mirrors>标签对,里面配置镜像

<!-- 配置阿里的镜像 -->
<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>    
</mirror>

四、仓库

1、仓库概述

  仓库是存放东西的, 存放maven使用的jar 和 我们项目使用的jar

  maven使用的插件(各种jar);我项目使用的jar(第三方的工具)

2、仓库的分类

  a)本地仓库

    就是自己的个人计算机上的文件夹,存放各种jar

  b)远程仓库  

    中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,https://repo.maven.apache.org :中央仓库的地址

    中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像

    私服,在公司内部,在局域网中使用的, 不是对外使用的

3、仓库的使用

  maven仓库的使用不需要人为参与。 他会自己去找,先找本地仓库,如果没有就去镜像中,再没有就到中央仓库中找

五、pom文件项目对象模型

1、modelVersion

Maven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0

<modelVersion>4.0.0</modelVersion>

2、坐标

  a)坐标:唯一值,在互联网中唯一标识一个项目

  b)groupId 组织 id,一般是公司域名的倒写。 格式可以为:

    1. 域名倒写。 例如 com.baidu

    2. 域名倒写+项目名。例如 com.baidu.appolo

  c)artifactId

    项目名称,也是模块名称,对应 groupId 中项目中的子项目

  d)version

    项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT。version 使用三位数字标识,例如 1.1.0

  e)生成项目唯一坐标

    groupId 、artifactId 、version 三个元素生成了一个Maven 项目的基本坐标,在众多的maven 项目中可以唯一定位到某一个项目。坐标也决定着将来项目在仓库中的路径及名称

<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>

   f)搜索使用的中央仓库

    https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件

3、项目打包packaging

  packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war。可以不写,

4、依赖

  dependencies 和 dependency,相当于java代码中的import

  例如:项目中需要使用myql驱动

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>
    <!--有多个依赖 可以写多个 -->
</dependencies>

5、properties

  设置属性

<properties>
    <!--maven构建项目使用的是utf-8, 避免中文的乱码--> 
    <project.build.sourceEncoding>UTF - 8</project.build.sourceEncoding>
    <!--编译java代码使用的jdk版本-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <!-- 你的java项目应该运行在什么样的jdk版本-->
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

6、build

   maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的jdk的版本等

  在build中可以配置插件,我们可以在网上搜索到这些插件,都有相关信息

<!-- build 配置maven构建项目的参数设置 -->
<build>
    <!-- plugins 配置插件 -->
    <plugins>
        <!-- plugin 配置具体的插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <!-- 插件名称 -->
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <!-- configuration 配置插件的信息 -->
            <configuration>
                <!-- 告诉maven 写的代码是jdk1.8上编译 -->
                <source>1.8</source>
                <!-- 我们程序应该运行在1.8的jdk上 -->
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

 

六、生命周期

1、maven生命周期

  就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署

2、maven的命令

  maven独立使用,通过命令,完成maven的生命周期的执行

  maven可以使用命令,完成项目的清理,编译,测试等等

3、maven的插件

  maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类

4、单元测试

  a)使用junit依赖

     junit是一个专门测试的框架(工具),可以 测试的是类中的方法, 每一个方法都是独立测试的。方法是测试的基本单位(单元)。

  b)maven借助单元测试,批量的测试你类中的大量方法是否符合预期的

  c)使用步骤

    c1)在pom.xml文件中假如单元测试依赖

<!-- 单元测试 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

    c2)在maven项目中的src/test/java目录下,创建测试程序

      推荐创建类和方法的名字规范:测试类的名称 是Test + 你要测试的类名;测试的方法名称 是:Test + 方法名称

      例如你要测试HelloMaven,创建测试类 TestHelloMaven

      要测试的方法:

@Test
public void testAdd(){
    测试HelloMaven的add方法是否正确
}

其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值, 必须的
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法的上面加入 @Test

5、maven常用命令

执行命令时,要在pom文件同级目录下哦

  1)mvn clean

    删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除

  2)mvn compile

    编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)

    编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面

    把main/resources目录下的所有文件都拷贝到target/classes目录下

  3)mvn test-compile

    编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)

    编译test/java/目录下的java 为class文件, 同时把class拷贝到 target/test-classes目录下面

    把test/resources目录下的所有文件都拷贝到target/test-classes目录下

  4)mvn test

    在运行该命令之后,会把上面的命令都先运行一遍:clean、compile、test-compile

    会在target下生成一个目录surefire-reports,保存测试结果

  5)mvn package

    打包主程序,会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包

    只包含src/main目录下的文件

    在target目录下生成一个jar文件,文件名是:项目名称+版本号

  6)mvn install

    会把本工程打包,并且按照本工程的坐标保存到本地仓库中,打包到本地仓库之后在本地仓库中可以根据坐标找到

    安装之后就可以给别人用了,别人可以拿来用,使用的时候根据坐标添加依赖就可以

  7)mvn deploy(不常用)

    部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中还会自动把项目部署到 web 容器中)。 

 

    

 

标签:maven,target,编译,--,核心,jar,Maven,仓库,目录
From: https://www.cnblogs.com/hyy-0/p/17632451.html

相关文章

  • 安装卸载对应的浏览器
    华为手机如何安装卸载对应的浏览器还是一件麻烦的事情? https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%8E%E4%B8%BA%20%20note%20%20root%E6%9D%83%E9%99%90%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AF&fenlei=256&oq=%25E5%258D%258E%25E4%25......
  • pixi.js 的头像制作功能【函数】
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><scriptsrc="https://cdn.jsdel......
  • JavaNote05-面向对象编程01
    0.面向对象内容的三条主线Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类面向对象的特征:封装、继承、多态、(抽象)其他关键字的使用:this、super、package、import、static、final、interface、abstract等1.面向对象编程概述面向对象是软件开发中的一类编程风......
  • centos更换java版本
     以java11为例先使用下面的命令下载java11$sudoyum-yinstalljava-11-openjdk-devel输入命令改变java环境$sudoalternatives--configjava出现下面的界面,选择3(假如需要换为java11) 输入java-version查看版本 ......
  • UML类关系图记不住?一篇搞定
    前言背景为什么要看UML,最近小编在准备架构师考试不得不再拾起来回顾看一看这块内容,毕竟谁也不会和考试的重点部分过意不去。之前也接触过这块的内容,总是搞混,关联关系用实线、泛化关系用实现空心箭头 ......表示,老记混淆。刚开始怀着只要干不坏,就往死里干心里记忆,结果打脸来的太......
  • 从Google开发者大会浅谈LLM的应用
    这周参加了在上海世博中心举办GoogleI/OConnect中国开发者大会,有几年没参加这么高质量的活动,有点感慨。     期间重点听了关于GCP和Google AI大语言模型的主题演讲,发现目前各大厂商仍然还处于大语言模型的早期应用阶段,GooglePaLM2也不例外。作为业界最领先的AI公司之......
  • 封装的函数小工具
    //部分为网上借用,以方便本人复查使用。//数字格式化如:123,456.78functionformatter_k(num){conststr=num.toString();//转字符串constval=str.replace(/\d+/,(n)=>{returnn.replace(/(\d)(?=(\d{3})+$)/g,($1)=>$1+",");});......
  • Golang 初识: 函数调用与定义丶字符串处理丶Json的处理
    一.基本函数调用与定义1packagemain23import(4"encoding/json"5"errors"6"fmt"7"math/rand"8"mylib/pkg/student"9"mylib/pkg/utils"10"sort"11......
  • 点亮一个LED灯-寄存器版
    目录一.流程简述二.查看参考手册一.流程简述1.打开MDK5新建一个工程并保存,选择芯片具体型号(F103C8).2.添加启动文件,创建main文件,放在工程根目录即可.3.编写代码通过控制寄存器点亮LED灯二.查看参考手册1.需要控制LED的亮灭就需要控制GPIO输出高低电平.所......
  • kali渗透win7靶机练习
    1.准备项目:装有kalilinux的虚拟机win7靶机2.查看一下kali和win7的ip:kali的IP为:192.168.164.129win7靶机的ip为:192.168.164.1873.将kali切换成root模式:4.用kali去ping一下win7靶机:如果ping不动,就要在win7里关掉防火墙(省略)5.启动Metasploit专用的数据库:msfc......