广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基础之初识Maven
  • 801
分享到

Java基础之初识Maven

2024-04-02 19:04:59 801人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、为什么使用Maven?二、使用Maven的好处三、Maven是什么?四、安装Maven五、第一个Maven六、Maven本地仓库的配置七、idea配置Maven八、第二个Ma

一、为什么使用Maven?

  • 首先我们先灵魂拷问一下jar包是什么?我们可以将它理解为我们写的一个Java程序,整个Java程序中由多个Java文件和依赖组成。了解清楚这个之后,接下来介绍我们为什么要使用Maven
  • 很多小伙伴学习完Maven之后还是有个疑问,它是干什么用的?所以进入今天的内容前,我先按照自己的理解说明一下Maven
  • Maven相当于一个仓库管理员,它有本地仓库和云端仓库两个仓库与,它在本地仓库中管理着我们创建的jar包,同样的,我们可以通过远程仓库来使用别人的jar包,当然了,它有属于自己的一套规范,只有这样,才可以让我们通过Maven来使用别人的包

二、使用Maven的好处

既然Maven是管理jar包的,当然了,有关jar包的一些问题它都可以解决,比如下面的问题:

jar包之间的依赖关系

  • 前面说了jar包相当于一个Java程序,因此jar包往往不是孤立存在,它也需要别的jar包支持才能正常工作,这就需要了解清楚jar包的依赖关系,Maven就提供了这个功能,帮助我们了解清楚依赖关系从而减少未来开发中可能会遇到的一些问题

jar包之间的冲突问题

  • 既然需要调用别的jar包才能工作,当jar包之间都使用了另一个jar包的不同版本的时候,就会造成jar包冲突,别怕,Maven也可以解决这个问题

获取第三方的jar包

  • 我们在做项目时,需要调用一个三方的jar包,如果去这个jar包的网站上下载岂不是太麻烦了,使用Maven可以直接从中央仓库下载,然后就可以很方便的调用这个jar包了

将项目拆分为多个工程模块

  • 在项目开发中,如果所有功能都使用一个工程模块,那么需要修改某个功能就很麻烦,我们就需要将整个项目按照功能进行模块拆分,但是当拆分后怎么相互调用和访问呢?使用Maven可以清晰地了解项目拆分的情况

实现项目的部署

  • 在实际生产环境中,项目规模增加到一定程度后,可能每个模块都需要运行在独立的服务器上,我们称之为分布式部署,这里就需要用到Maven来完成项目的部署

三、Maven是什么?

介绍完Maven的好处之后,我们正式开始学习Maven

Maven是自动化构建工具,构建是什么呢?,以WEB项目举例

  • 我们可以将未编译的Web工程比喻为一只生的鸡,编译好的Web工程是一只煮熟的鸡,编译部署的过程就是将鸡炖熟
  • 在实际项目中整合第三方框架,Web工程中除了Java程序和jsP页面、图片等静态资源之外,还包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行
  • 构建就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程

接下来介绍一下构建的环节

1. 清理:删除以前的编译结果,为重新编译做好准备。

2.编译:将Java源程序编译为字节码文件。

3.测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

4.报告:在每一次测试后以标准的格式记录和展示测试结果。

5.打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。

6.安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。

7.部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

我们要构建一个jar包,就需要手动完成上面的步骤,使用Maven就可以自动的完成上述步骤,Maven之所以能够实现自动化的构建,和它的设计是紧密相关的。我们对Maven的学习就围绕它的九个核心概念展开

1.POM

2.约定的目录结构

3.坐标

4.依赖管理

5.仓库管理

6.生命周期

7.插件和目标

8.继承

9.聚合

四、安装Maven

第一步:我们需要下面两个包,第一个的maven-bin.zpi这个,src是源码,我们用不到,第二个是repo,它里面包含了一些常用的依赖包

在这里插入图片描述

第二步:我们将这两个包放到一个文件夹中并解压缩一下

在这里插入图片描述

第三步,配置环境变量

我的电脑–>右键–>属性–>高级系统设置–>环境变量,然后跟前面配置Java一样,我们先新建一个HOME

在这里插入图片描述
第四步,添加path
在这里插入图片描述

第五步,测试一下是否成功:输入命令: mvn -version

在这里插入图片描述

五、第一个Maven

我们先手动创建一下工程,感受一下,然后我再介绍怎么使用IDEA创建Maven工程

第一步:创建约定的目录结构


Hello
	 src
	 ——main
	 ————java
	 ————resources
	 ——test
	 ————java
	 ————resources
	 pom.xml

第二步:创建Maven的核心配置文件pom.xml,先直接复制就好


<?xml version="1.0" ?>
<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.company.maven</groupId>
	<artifactId>Hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<name>Hello</name>
	  
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.0</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

第三步:编写主代码,在src/main/java/com/company/maven目录下新建文件Hello.java


package com.company.maven;
public class Hello {
	public String sayHello(String name){
		return "Hello "+name+"!";
	}
}

第四步:编写测试代码,在/src/test/java/com/company/maven目录下新建测试文件HelloTest.java


package com.company.maven;	
	import org.junit.Test;
	import static junit.framework.Assert.*;
	public class HelloTest {
		@Test
		public void testHello(){
			Hello hello = new Hello();
			String results = hello.sayHello("atguigu");
			assertEquals("Hello atguigu!",results);	
		}
	}

第五步:运行几个基本的Maven命令,运行Maven命令时一定要进入pom.xml文件所在的目录


打开cmd命令行,进入Hello项目根目录(pom.xml文件所在目录)执行mvn compile命令,查看根目录变化
cmd 中继续录入mvn clean命令,然后再次查看根目录变化
cmd 中录入 mvn  compile命令, 查看根目录变化
cmd 中录入 mvn  test-compile命令, 查看target目录的变化
cmd 中录入 mvn  test命令,查看target目录变化
cmd 中录入 mvn  package命令,查看target目录变化
cmd 中录入 mvn  install命令, 查看本地仓库的目录变化

六、Maven本地仓库的配置

  • Maven的核心程序并不包含具体功能,仅负责宏观调度。具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程中央仓库下载。此时如果不能上网则无法执行Maven的具体功能。为了解决这个问题,我们可以将Maven的本地仓库指向一个在联网情况下下载好的目录
  • Maven默认的本地仓库:~.m2\repository目录
  • Maven的核心配置文件位置:就在我们解压目录中的conf\setting.xml文件中

<localRepository>以及准备好的仓库位置</localRepository>

在这里插入图片描述

记得前面那个repo.zip么,我们将这个目录添加到配置文件中

在这里插入图片描述

因为Maven是国外开发的,所以它的中央仓库也是在国外,我们要安装相关的jar可能需要翻墙(其实可以加个配置,使用国内的镜像仓库就好)直接在setting中添加下面的配置信息,我添加的是阿里的镜像源,后面会讲这个知识点,先照着我的写


<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

七、IDEA配置Maven

前面手动创建只是为了让大家了解它的构造,我们实际开发中当然不可能这么麻烦,直接在IDEA中配置就好
第一步,打开Maven的配置设

在这里插入图片描述

第二步,设置maven的安装目录及本地仓库

在这里插入图片描述

第三步,勾选配置

在这里插入图片描述

八、第二个Maven

第一步:新建一个项目MavenProject,直接右键,建立一个空白文件夹

在这里插入图片描述

第二步:右键→new Module→Maven→创建一个Hello工程模块

在这里插入图片描述

在这里插入图片描述


main目录用于存放主程序。
test目录用于存放测试程序。
java目录用于存放源代码文件。
resources目录用于存放配置文件和资源文件

第三步 : 配置Maven的核心配置文件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 公司域名倒叙+项目名称  -->
    <groupId>com.company.helloworld</groupId>
    <!-- 模块名称  -->
    <artifactId>Hello</artifactId>
    <!-- 版本号 -->
    <version>1.0-SNAPSHOT</version>
    <dependencies>
       <!-- 添加第三方jar包  -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

第四步:编写主代码,在src/main/java目录下新建文件Hello.java


package com.atguigu.maven;

public class Hello {
    public String sayHello(String name){
        return "Hello "+name+"!";
    }
}

第五步:编写测试代码,在/src/test/java目录下新建测试文件HelloTest.java


package com.company.helloworld;
import org.junit.Test;

public class HelloTest {
    @Test
    public void testHello(){
        Hello hello = new Hello();
        String maven = hello.sayHello("Maven");
        System.out.println(maven);
    }
}

第六步:使用Maven的方式运行Maven工程,在右侧那个Maven中

在这里插入图片描述

九、Maven打包插件

在我们打包我们的项目时,默认是不会将我们使用的依赖进行打包的,如果想要将我们程序所需要的依赖连同我们的项目一起打包,Maven也可以做到,只需要将下面的内容放到pom.xml中就好了


<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
              <arcHive>
                    <manifest>
                     <!-- 指定主类 -->
                        <mainClass>xxx.xxx.XXX</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <Goals>
                            <goal>single</goal>
                        </goals>
                    </execution>

            </executions>
        </plugin>
    </plugins>
</build>

十、总结

本章主要介绍了Maven的基本使用,学到这里我们要清楚知道,Maven就是为了方便工程管理的,它就是一个仓库管理员,有本地仓库和远程仓库,可以让我们方便是使用别人开发好的jar包,也可以让我们进行项目的部署与管理。

到此这篇关于Java基础之初识Maven的文章就介绍到这了,更多相关Java Maven内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java基础之初识Maven

本文链接: https://www.lsjlt.com/news/125559.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基础之初识Maven
    目录一、为什么使用Maven?二、使用Maven的好处三、Maven是什么?四、安装Maven五、第一个Maven六、Maven本地仓库的配置七、IDEA配置Maven八、第二个Ma...
    99+
    2022-11-12
  • Java基础之Maven详解
    目录一、Maven环境的搭建1. 为什么要学习Maven?2. Maven项目架构管理工具3. 下载安装Maven4. 配置环境变量5. 阿里云...
    99+
    2022-11-12
  • Springboot基础学习之初识SpringBoot
    目录一、图示二、springboot是什么三、spring是如何简化开发的?四、springboot五、第一个spingboot程序一、图示 spring再简化:SpringBoot...
    99+
    2022-11-12
  • Spring基础篇之初识DI和AOP
    前言  作为从事java开发的码农,Spring的重要性不言而喻,你可能每天都在和Spring框架打交道。Spring恰如其名的,给java应用程序的开发带了春天般的舒爽感觉。Spring,可以说是任何一个java开发者通往技术高阶的必备基...
    99+
    2023-05-30
  • 初识Java基础之数据类型与运算符
    目录数据类型布尔类型字符串类型String拼接字符'+'转义字符运算符加减乘除模运算增量赋值运算符自增运算符和自建运算符赋值运算符判断运算符逻辑判断符按位运算符移位运算条件运算符运算...
    99+
    2022-11-12
  • Python基础-初识Python
    本文防盗链:http://python789.blog.51cto.comPython基础-初识Python    作者是一名运维工程师,以下为作者学习Python的笔记,希望能给大家带来一些帮助,写的有不对的地方,还望大家指出来,或者加入...
    99+
    2023-01-31
    基础 Python
  • 初识JavaScript的基础
    目录一、JavaScript的书写位置二、JavaScript常用的输入输出语句1.浏览器弹出警告框:2.浏览器控制台打印输出信息:3.浏览器弹出输入框,让用户可以输入:三、变量1....
    99+
    2022-11-12
  • Java基础之Maven的示例分析
    这篇文章将为大家详细讲解有关Java基础之Maven的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Maven是什么?Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的...
    99+
    2023-06-15
  • Python基础篇之初识Python必看攻略
    Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一...
    99+
    2022-06-04
    必看 攻略 基础
  • python基础知识之函数初阶——命名
    python中的命名空间分三种: 内置的命名空间,在启动解释器的时候自动加载进内存的各种名字所在的空间,比如print,input等不需要定义就可以使用的名字 全局命名空间,就是从上到下所有我们定义的变量名和函数名所在的空间,是在程序从上...
    99+
    2023-01-31
    基础知识 函数 python
  • Maven基础知识大梳理
    目录Maven工程基础知识Maven仓库的分类Maven常用命令的含义一个项目生命周期打包类型:<packaging >依赖范围:<scope>聚合与继承的关...
    99+
    2022-11-12
  • C 语言基础之初识 C 语言常量
    目录1、字面常量2、const修饰的常变量3、#define定义的标识符常量(也叫预处理)4、枚举常量C语言中的常量分为以下几种: 字面常量 const修饰的常变量...
    99+
    2022-11-12
  • Java基础之简单介绍一下Maven
    目录一、Maven是什么?二、Maven的作用三、Maven能干的事情四、Maven的好处五、Maven的仓库分类以及简单的说明六、Maven定义jar包的各个字段的描述七、Mave...
    99+
    2022-11-12
  • Python开发(基础):初识Pytho
    Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣...
    99+
    2023-01-31
    基础 Python Pytho
  • java基础之String知识总结
    目录一、概念二、特点三、三种构造方式:四、字符串常量池一、概念 String代表字符串,java语言中所有双引号的字符串都是String的对象,不管是否是new出来的对象。 二、特点...
    99+
    2022-11-12
  • 浅谈Java基础知识之BigDecimal
    目录一、基本使用二、舍入模式三、注意事项四、异常处理 ArithmeticException异常一、基本使用 使用示例: // 初始化 BigDecimal bd1=new Bi...
    99+
    2022-11-12
  • Java基础知识总结之继承
    目录一、继承的基本概念二、继承的好处和弊端三、继承中变量访问的特点四、super关键字五、继承中构造方法的访问特点六、继承中成员方法的访问特点七、方法重写八、包九、修饰符十、stat...
    99+
    2022-11-12
  • python之基础知识
    1、变量: 2、字符串:用   “  ” 或 ' ' 标注的。 3、列表:[  ] 4、del 和 pop 的区别: 判断何时使用:当从列表中删除元素后不再使用,则del,若后续还使用则pop() 例: #del name =["lele...
    99+
    2023-01-30
    基础知识 python
  • 【零基础??天速成 Java】Day2 - 初识面向对象
    目录 前言 1. 可变参数的使用 2. 构造器 3. 包 1、包的创建 2、包的使用 3、包的命名规范 4、常用的包 5. 访问修饰符 6. 继承  7. super 关键字 8. 方法重写 Override 写在最后: 前言 我的 j...
    99+
    2023-09-01
    java
  • Java基础知识之ByteArrayOutputStream流的使用
    目录Java ByteArrayOutputStream流的使用一、ByteArrayOutputStream流定义二、ByteArrayOutputStream流实例域三、Byte...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作