Java之Maven【IDEA版】入门到精通(一篇文章精通系列)

x33g5p2x  于2021-09-19 转载在 Java  
字(6.3k)|赞(0)|评价(0)|浏览(382)

一、Maven简介

1、传统项目管理状态分析

jar包不统一,jar包不兼容
*
工程升级维护过程操作繁琐

2、Maven是什么

Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
*
POM (Project Object Model):项目对象模型

3、Maven的作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目结构

二、下载与安装

1、Maven下载

官网: http://maven.apache.org/
下载地址: http://maven.apache.org/download.cgi

2、Maven安装

  • Maven属于绿色版软件,解压即安装

  • 在Maven的解压文件旁边创建repository空文件

  • Maven环境变量配置依赖Java,需要配置JAVA_HOME

设置MAVEN自身的运行环境,需要配置MAVEN_HOME测试环境配置结果

在高级系统设置里面

在命令行当中输入以下命令测试是否安装成功

mvn -version

证明安装成功

三、Maven基础概念

1、仓库

仓库:用于存储资源,包含各种jar包

仓库

  • 仓库:用于存储资源,包含各种ar包

  • 仓库分类:

  • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源

  • 远程仓库:非本机电脑上的仓库,为本地仓库提供资源

  • 中央仓库:Maven团队维护,存储所有资源的仓库

  • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源

  • 私服的作用:

  • 保存具有版权的资源,包含购买或自主研发的jar

  • 中央仓库中的jar都是开源的,不能存储具有版权的资源

  • 一定范围内共享资源,仅对内部开放,不对外共享

2、坐标

什么是坐标?

Maven中的坐标用于描述仓库中资源的位置https://repo1.maven.org/maven2/
*
Maven坐标主要组成

groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如: org.mybatis)

artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)

version:定义当前项目版本号

packaging:定义该项目的打包方式
*
Maven坐标的作用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

3、本地仓库配置

  • Maven启动后,会自动保存下载的资源到本地仓库

  • 默认位置

<localRepository>${user.home }/.m2/repository</localRepository>

当前目录位置为登录用户名所在目录下的.m2文件夹中

  • 自定义位置

<localRepository>D:/Maven/repository</localRepository>

当前目录位置为D:/Maven/repository文件夹中

4、 Maven 阿里云(Aliyun)仓库

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:

<mirrors>
    <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>
</mirrors>

5、全局setting与用户setting区别

●全局settting定义了当前计算器中Maven的

●公共配置用户settting定义了当前用户的配置

三、第一个Maven项目(纯手工制作)

1、创建目录结构

在刚刚Maven的安装目录旁边创建Test目录

进入Test,创建project

进入project,创建java-project

进入java-project,创建src

其他依次类似创建如下目录结构

2、 在src同层目录下创建pom.xml

在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.itzheng</groupId>
	<artifactId>java-project</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
	</dependencies>
</project>

3、 Maven项目构建命令

(1)手工构建

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

在D:\Maven\Test\project\java-project\src\main\java\com\itzheng当中创建一个测试类

写入如下内容

public class Hello 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

在D:\Maven\Test\project\java-project打开cmd

mvn install

指定下载相关依赖到repository当中

成功

在repository我们发现一些自动下载好的jar

同时在项目目录下自动创建target文件夹

在里面我们发现打包好的jar,在此处打开cmd,

框当中输入cmd回车

进入classes当中
输入以下内容:java -cp . com.itzheng.Htllo

(2)插件创建工程
  • 创建工程语法
mvn archetype:generate
	-DgroupId={project-packaging} 
	-DartifactId={project-name} 
	-DarchetypeArtifactId=maven-archetype-quickstart
	-DinteractiveMode=false
  • 创建java工程
mvn archetype:generate 
	-DgroupId=com.itzheng 
	-DartifactId=java-project2  
	-DarchetypeArtifactId=maven-archetype-quickstart  
	-Dversion=0.0.1-snapshot  
	-DinteractiveMode=false

在刚刚的Test的project目录下输入

生成Java项目

自动创建好了对应的文件

  • 创建web工程
mvn archetype:generate 
	-DgroupId=com.itheima 
	-DartifactId=web-project 
	-DarchetypeArtifactId=maven-archetype-webapp 
	-Dversion=0.0.1-snapshot 
	-DinteractiveMode=false

创建成功

左边为Java项目右边为web项目

四、第一个Maven项目(IDEA生成)

1、IDEA配置Maven

选择Maven的安装地址

选择Maven的配置文件

选择本地仓库位置

2、手工创建Java项目

(1)工程搭建

进入工程后右下角点击

(2)在pom.xml当中引入测试junit的依赖

<?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>com.itzheng.test</groupId>
    <artifactId>Java-maven-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
(3)创建测试类

package com.itzheng.test;

import org.junit.Test;

public class Demo01 {

    @Test
    public void test(){
        System.out.println("Test");
    }

}

运行测试

运行结果

3、手工创建Web项目

(1)Web项目搭建

以下内容不需要动

(2)添加依赖
  • 默认引入的是jetty我也可以同时加上Tomcat

<plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>8090</port>
          <path>/</path>
        </configuration>
      </plugin>
  • 添加Servlet依赖

<dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
(3)补齐缺少的目录

查看左边我们发现缺少一些目录

创建Java目录

创建其他目录结构

(4)创建对应的类
  • UserDao

package com.itzheng.dao;

public class UserDao {

    public void testUserDao(){
        System.out.println("这里是Dao");
    }

}
  • UserService

package com.itzheng.service;

public class UserService {
    public void testUserService(){
   		System.out.println("这里是Service");
    	UserDao userDao = new UserDao();
        userDao.testUserDao();
    }
}
  • UserServlet

package com.itzheng.web;

import com.itzheng.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/User")
public class UserServlet extends HttpServlet {

    // 处理 GET 方法请求的方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserService userService = new UserService();
        userService.testUserService();

    }

    // 处理 POST 方法请求的方法
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
(5)测试运行

如果运行报错删除web.xml当中一些没有用 的留下这些即可

访问该地址

http://localhost:8090/User

控制台输出结果

相关文章