Maven--架构项目管理工具

目录

Maven的概念

什么Maven?

maven为什么服务?

maven的主要功能?

什么是依赖管理?

为什么使用maven?

[maven 安装](#maven 安装)

[maven 安装目录分析](#maven 安装目录分析)

Maven的配置

何为Maven仓库?

Maven仓库布局

仓库的分类

1.本地仓库

2.远程仓库

Maven的环境配置

设置MAVEN_HOME环境变量

[检查 maven 是否配置成功](#检查 maven 是否配置成功)

maven项目

Maven的第一个项目

[使用文件夹创建maven项目目录 创建Hello文件夹](#使用文件夹创建maven项目目录 创建Hello文件夹)

在项目Hello根目录建立pom.xml

创建Hello.java文件

创建HelloTest.java文件

进行maven的项目操作

Maven的第二个项目

[使用文件夹创建maven项目目录 创建HelloFriend文件夹](#使用文件夹创建maven项目目录 创建HelloFriend文件夹)

在项目HelloFriend根目录建立pom.xml

创建HelloFriend.java文件

创建HelloFriendTest.java文件

测试打包HelloFriend项目

IDEA整合Maven项目

IDEA的Maven全局配置

IDEA创建Maven的Java项目

IDEA创建Maven的JavaWeb项目

IDEA导入既有Maven项目

[Import Project](#Import Project)

Open

Maven项目视图


Maven的概念

什么Maven?

maven被翻译为翻译为"专家","内行"

Maven 是一个自动化构建工具,主要服务于基于 Java 的项目。

maven为什么服务?

Java项目 JavaWeb项目

maven的主要功能?

构建管理、依赖管理

依赖:第三方jar包

什么是依赖管理?

对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。

对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

为什么使用maven?

每个人的idea配置不同,就很容易出现在本地能够运行的代码换个地方编译就出错

maven

拥有约定,知道你的代码在哪里,放到哪里去

拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情

拥有依赖管理,仓库管理

maven 安装

下载maven的地址 Maven -- Download Apache Maven

解压到相应目录即可(无中文路径)

maven 安装目录分析

bin:含有mvn运行的脚本

boot:含有plexus-classworlds类加载器框架

conf:含有settings.xml配置文件

lib:含有Maven运行时所需要的java类库

LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

Maven的配置

点击conft,右键点击setttings使用Notepad++打开(或者其他可以查看代码的工具)

设置本地仓库位置,以后引入的jar包都会存放在这里

我这里设置的是D:\repository 如果D盘没有这个文件夹 系统会自动创建

设置阿里云的远程仓库,一定注意修改的范围不能放入注释中,否则无效

也可以设置腾讯云或者中央远程仓库

何为Maven仓库?

用来统一存储所有Maven共享构建的位置就是仓库

Maven仓库布局

根据Maven坐标定义每个构建在仓库中唯一存储路径

groupId/artifactId/version/artifactId-version.packaging

  • groupId:组织标识,一般为:公司网址的反写+项目名
  • artifactId:项目名称,一般为:项目名-模块名
  • version:版本号 形式为0.0.1-SNAPSHOT:
    • 第一个 0 表示大版本号,第二个 0 表示分支版本号,第三个 0 表示小版本号
    • SNAPSHOT -- 快照版本,ALPHA -- 内侧版本,BETA -- 公测版本,RELEASE -- 稳定版本,GA -- 正式发布
    • SNAPSHOT -- 快照版本,和RELEASE -- 稳定版本被使用的更多
  • packaging:打包的方式,如:pom, jar, maven-plugin, ejb, war, ...
  • clissifier:用来帮助定义构件输出的一些附属构件。

仓库的分类

1.本地仓库

• ~/.m2/repository/ 可修改

• 每个用户只有一个本地仓库

2.远程仓库
  • 中央仓库:maven的默认仓库 https://mvnrepository.com/
  • 私服:一种特殊的远程仓库(阿里云,腾讯云,局域网内)

Maven的环境配置

设置MAVEN_HOME环境变量

升级时只需要下载最新版本,解压缩重新设置MAVEN_HOME环境变量即可

变量值内容为你所下载的maven文件下bin的上一层

设置Path环境变量,把 %MAVEN_HOME%\bin 添加到Path的变量值末尾,与前面的内容用 ; 隔开,如图:

检查 maven 是否配置成功

打开cmd 输入 mvn -version

maven项目

Maven的第一个项目

使用文件夹创建maven项目目录 创建Hello文件夹

src/main/java ------ 存放项目的.java文件

src/main/resources ------ 存放项目资源文件,如spring, mybatis配置文件

src/test/java ------ 存放所有测试.java文件,如JUnit测试类

src/test/resources ------ 测试资源文件

target ------ 项目输出位置

pom.xml

在项目Hello根目录建立pom.xml
java 复制代码
<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>cn.tx.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hello</name>
  
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>        
        
    </dependencies>
</project>
创建Hello.java文件

在src/main/java/cn/tx/maven目录下新建文件Hello.java

java 复制代码
package cn.tx.maven;
public class Hello {
    public String sayHello(String name){
        return "Hello "+name+"!";
    }
}
创建HelloTest.java文件

在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java

java 复制代码
package cn.tx.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("maven");
        assertEquals("Hello maven!",results);        
    }
}
进行maven的项目操作
  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化

  2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化

  3. cmd 中录入 mvn clean compile命令, 查看根目录变化

  4. cmd 中录入 mvn clean test命令,查看根目录变化

  5. cmd 中录入 mvn clean package命令,查看根目录变化

  6. cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里

打包完成之后可以查看打包好的jar包,这个包在你的本地仓库中

Maven的第二个项目

使用文件夹创建maven项目目录 创建HelloFriend文件夹

HelloFriend

--src

-----main

----------java

----------resources

-----test

---------java

---------resources

--pom.xml

在项目HelloFriend根目录建立pom.xml
java 复制代码
<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>cn.tx.maven</groupId>
  <artifactId>HelloFriend</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>HelloFriend</name>
  
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>        
        
        <dependency>
            <groupId>cn.tx.maven</groupId>
            <artifactId>Hello</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>        
        
    </dependencies>
</project>
创建HelloFriend.java文件

在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java

java 复制代码
package cn.tx.maven;

import cn.tx.maven.Hello;

public class HelloFriend {

    public String sayHelloToFriend(String name){
        
        Hello hello = new Hello();
        String str = hello.sayHello(name)+" I am "+this.getMyName();
        System.out.println(str);
        return str;
    }
    
    public String getMyName(){
        return "John";
    }

}
创建HelloFriendTest.java文件

在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java

java 复制代码
package cn.tx.maven;

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

import cn.tx.maven.Hello;


public class HelloFriendTest {
    @Test
    public void tesHelloFriend(){
        
        HelloFriend helloFriend = new HelloFriend();
        String results = helloFriend.sayHelloToFriend("zhangsan");
        assertEquals("Hello zhangsan! I am John",results);        

    }
}
测试打包HelloFriend项目

在HelloFriend目录下执行命令mvn package

系统报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar

故此我们需要重新构建第一个项目Hello并安装到数据仓库,在命令行Hello根目录下执行mvn clean install

对Hello项目进行清理并安装后,对HelloFriend项目再次进行打包

可以看到本次打包成功,说明HelloFriend项目已经可以加载Hello项目所打包的jar包

IDEA整合Maven项目

IDEA的Maven全局配置

IDEA创建Maven的Java项目

IDEA创建Maven的JavaWeb项目

接下来需要进行一些配置来确定web项目可以正常运行

添加war包的方法:

配置web服务器

添加本地tomcat配置

测试项目运行

至此,在IDEA上使用Maven配置的Java web工程已经完成配置

IDEA导入既有Maven项目

两种方式Import Project和Open

Import Project

导入引入依赖Hello项目的HelloFriend项目,可以看到Hello项目已经被打成jar包引用到HelloFriend的Maven依赖中

Open

Maven项目视图

Maven项目视图主要用于查看该maven项目的各项属性,同时也可以进行一些常见的maven的操作,比如打包,清理,测试等等;


相关推荐
confiself11 分钟前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
Wlq041516 分钟前
J2EE平台
java·java-ee
XiaoLeisj22 分钟前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
豪宇刘37 分钟前
SpringBoot+Shiro权限管理
java·spring boot·spring
Elaine20239141 分钟前
02多线程基础知识
java·多线程
gorgor在码农44 分钟前
Redis 热key总结
java·redis·热key
百事老饼干1 小时前
Java[面试题]-真实面试
java·开发语言·面试
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_857589361 小时前
SpringBoot框架:作业管理技术新解
java·spring boot·后端