项目管理工具——Maven

本文介绍了Maven作为Java项目管理工具的基本概念,包括POM、仓库和坐标的概念,详细讲解了如何下载安装、配置本地和远程仓库,以及创建和构建Maven项目。文中还提到了使用插件创建项目和在IDEA中创建Maven工程的方法,并讨论了打包过程中的注意事项,如生成可执行文档和配置选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Maven简介

  • Maven是用java语言编写的。
  • Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型
    在这里插入图片描述
  • 统一开发结构:提供标准的、统一的项目结构
    在这里插入图片描述

二、下载与安装

官网:maven.apache.org在这里插入图片描述
选择安装包
在这里插入图片描述
在这里插入图片描述

环境配置

安装完成后,需要配置MAVEN_HOME环境变量
在这里插入图片描述
并把Mavenbin目录引用到Path
在这里插入图片描述
在命令提示符中输入mvn检测是否配置成功
在这里插入图片描述

三、Maven基础概念

3.1 仓库

  • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
  • 远程仓库:非本机电脑上的仓库,为本地仓库提供资源
    • 中央仓库:Maven团队维护,存储所有资源的仓库
    • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源

      私服的作用:
      1.保存具有版权的资源,包含购买或自主研发的jar(中央仓库中的jar都是开源的,不能存储具有版权的资源)
      2.一定范围内共享资源,仅对内部开放,不对外共享
      在这里插入图片描述

3.2 坐标

  • 坐标用于描述仓库中资源的位置,是资源的唯一标识。
  • Maven坐标主要组成部分
    • groupld:定义当前Maven项目隶属 组织名称(id)
      (通常是域名反写,例如:org.mybatis)
    • artifactld:定义当前Maven 项目名称(id)
      (通常是模块名称,例如CRMSMS)
    • version:定义当前项目 版本号
    • packaging:定义该项目的打包方式
  • Maven坐标的作用
    • 定位资源位置,通过坐标可以将资源的识别与下载工作交由机器完成
在中央仓库网获取依赖坐标

中央仓库网址:https://mvnrepository.com
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后把坐标直接拷贝到项目pom.xml即可

3.3 本地仓库配置

  1. 进入自己的用户目录
    在这里插入图片描述
    最开始是没有仓库目录的(.m2)
  2. 创建.m2仓库目录
    打开命令行,执行mvn 在这里插入图片描述
    虽然目录创建好了,但是因为这里是C盘,如果把资源放在这里会占用大量空间。因此我们需要在一个空间充足的地方创建一个仓库目录。
  3. 另外创建一个仓库目录如D:\Maven\repository用来存放资源。
  4. 打开maven安装目录\conf\settings.xml配置文件,添加本地仓库配置
    <localRepository>D:\maven\repository</localRepository>
    
    在这里插入图片描述

3.4 远程仓库配置

远程仓库默认是maven的中央仓库,下载很慢
在这里插入图片描述
所以要修改成国内的镜像仓库,同样是打开maven安装目录\conf\settings.xml配置文件
在这里插入图片描述
如修改成阿里云的镜像仓库

<mirror>
	<!-- 此镜像的唯一标识符,用来区分不同的mirror元素 -->
	<id>nexus-aliyun</id>
	<!-- 对哪种仓库进行镜像,简单说就是替代哪个仓库 -->
	<mirrorof>central</mirrorof>
	<!--镜像名称-->
	<name>Nexus aliyun</name>
	<!--镜像URL -->
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

在这里插入图片描述

以上配置都是全局配置。

四、手工创建一个Maven项目

4.1 搭建目录结构

Maven规范中,普通JavaEE项目目录结构如下:
在这里插入图片描述
Web项目则比JavaEE项目多了点东西
在这里插入图片描述

下面手动搭建一个

  1. 在D盘(或其他任意地方)创建一个project目录,用来存放项目
    在这里插入图片描述

  2. 然后在project目录里面创建一个Maven项目目录project-java,作为一个项目的根目录
    在这里插入图片描述

  3. 项目目录下再创建源码目录src,用来存放源代码
    在这里插入图片描述

  4. 源代码目录下创建主代码目录main和测试代码目录test
    在这里插入图片描述

  5. 主代码目录main下创建java目录和resources资源目录
    在这里插入图片描述

  6. …\src\main\java\com\wipinfo目录下创建一个.java`文件,写上一个简单方法
    在这里插入图片描述

    package com.wipinfo;
    
    public class Demo{
    	public String say(String name){
    		System.out.println("hello " + name);
    		return "hello " + name;
    	}
    }
    
  7. test目录下创建一个java目录和resources测试资源目录
    在这里插入图片描述

  8. ..\test\java\com\wipinfo测试目录下创建Demo.java的测试程序DemoTest.java
    在这里插入图片描述

    package com.wipinfo;
    
    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);
    	}
    }
    

    到这里,基本结构已经创建好了,但还不完整。因为还差一个Maven项目的描述文件pom.xml

  9. ..\src\中创建pom.xml
    先去复制一份pom.xml的格式,在maven安装目录\lib\中有很多jar
    在这里插入图片描述
    任意打开一个
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    简单修改如下:

    <?xml version="1.0" encoding="UTF-8"?> <!-- 标准头 -->
    
    <!-- 根元素 project 表示一个maven project,里面包含了三项属性不用深究 -->
    <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">
    	<!-- 模型版本号,是 pom 对象模型的版本,而不是 maven 版本 -->
    	<modelVersion>4.0.0</modelVersion>
    	<!-- 组织、公司名称 -->
    	<groupId>com.wipinfo</groupId>
    	<!-- 项目名称 -->
    	<artifactId>project-java</artifactId>
    	<!-- 版本号 -->
    	<version>1.0</version>
    	<!-- 打包类型 -->
    	<packaging>jar</packaging>
    
    	<!-- 依赖坐标 -->
    	<dependencies>
        	<dependency>
            	<groupId>junit</groupId>
            	<artifactId>junit</artifactId>
           	 <version>4.12</version>
        	</dependency>
    	</dependencies>
    </project>
    

    可能有些元素没有,比如 <packaging> <version>等自己加上。

    在项目目录下创建一个pom.xml文件(与src目录同级),把内容复制进去保存
    在这里插入图片描述
    到这里,一个完整的maven项目的目录结构就算搭建好了。

4.2 构建maven项目

4.2.1 项目构建指令

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

mvn compile #编译
mvn clean   #清理
mvn test    #测试
mvn package #打包
mvn install #安装到本地仓库

注意:需要在命令提示符中进入项目pom.xml文件所在目录执行命令。

mvn compile

编译命令,把项目中的源代码文件编译成字节码文件,生成的字节码文件放在target目录中。
在这里插入图片描述
此时进入项目目录会发现多个了target目录
在这里插入图片描述
target目录里面有用来存放字节码文件的classes目录和存放maven状态记录文件的maven-status目录
在这里插入图片描述
classes目录里面装着编译好的.class文件
在这里插入图片描述

mvn clean

清除命令,删除存放字节码的target目录
在这里插入图片描述

mvn test

编译并执行项目里的单元测试
在这里插入图片描述
执行测试会在target目录中生成两个新目录,其中一个是存放测试结果报告的。
在这里插入图片描述
测试报告有两份:
在这里插入图片描述

mvn package

打包指令,把项目打包成pom.xml<packaging>指定的类型对应的文件。

在命令窗口可以看到,package命令先执行了compiletest最后再打包
在这里插入图片描述
执行完后在target目录多了两个东西
在这里插入图片描述

mvn install

安装指令,把打包好的项目放到本地仓库
执行前打开本地仓库是这样的
在这里插入图片描述
再看执行过程,和package相比多了一步install操作
在这里插入图片描述
执行完再看本地仓库,多了个目录
在这里插入图片描述
进去看会发现
在这里插入图片描述

4.3 使用插件创建maven工程

Maven提供了插件,可以通过指令直接根据模板创建一个Maven工程,不用自己创建目录结构这么麻烦。

基本指令格式:

mvn archetype:generate
	-DgroupId=(project-packaging}
	-DartifactId=(project-name}
	-DarchetypeArtifactId=maven-archetype-quickstart
	-DinteractiveMode=false

如创建java类型的maven工程:

mvn archetype:generate /
	-DgroupId=com.itheima /
	-DartifactId=java-project /
	-DarchetypeArtifactId=maven-archetype-quickstart /
	-Dversion=1.0.0 /
	-DinteractiveMode=false

如创建web类型的maven工程:

mvn archetype:generate /
	-DgroupId=com.itheima /
	-DartifactId=web-project /
	-DarchetypeArtifactId=maven-archetype-webapp /
	-Dversion=1.0.0 /
	-DinteractiveMode=false /

用插件模板创建的工程可能会少一些东西,比如java工程少了resource目录、多了一个Hello world程序等,需要自己创建增删一下。

五、idea创建一个Maven工程

六、打包注意事项

参考官方文档:

生成可独立执行文档

Packaging an executable archive is performed by the repackage goal, as shown in the following example

是否打包成独立执行文档由repackage这个设置决定:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Packaging Executable Archives:
The plugin can create executable archives (jar files and war files) that contain all of an application’s dependencies and can then be run with java -jar.

插件可以生成可执行.jar.war文档, 其中包含所有应用依赖,并且直接通过java -jar命令启动运行

If you are using spring-boot-starter-parent, such execution is already pre-configured with a repackage execution ID so that only the plugin definition should be added.
如果项目<parent>spring-boot-starter-parent,那么就已经预先设置好了repackage,只需要简单添加一下插件依赖就行:

<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
   </plugins>
</build>

configuration常用设置项

skip

表示是否跳过repackage的执行,添加了<skip>true</skip>后将不会生成独立运行的jar包。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

testFailureIgnore

忽略测试单元测试中发生的错误

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>

参考资料:哔哩哔哩 黑马程序员 黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven
https://www.bilibili.com/video/BV1Ah411S7ZE?share_source=copy_web

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值