从零教你使用Maven,从此项目打包不用愁

解压后把Maven的根⽬录配置到系统环境变量中MAVEN_HOME,将bin⽬录配置到path变量中。

注意:maven解压后存放的⽬录不要包含中⽂和空格

步骤:电脑 > 属性 > 高级系统设置 > 环境变量

在这里插入图片描述

Path里面添加:%MAVEN_HOME%

在这里插入图片描述

3.1.4. 检查Maven是否安装成功

打开dos窗⼝,执⾏ mvn -v

在这里插入图片描述

3.2. 认识Maven⽬录结构


Maven项⽬⽬录结构

在这里插入图片描述

任务:⼿动创建⼀个Maven项⽬,并编译运⾏成功

在这里插入图片描述

3.2.1. 创建⼀个⽂件夹作为项⽬的根⽬录

在根⽬录中创建⼀个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">

4.0.0

com.xxxx

maven01

0.0.1-SNAPSHOT

jar

maven01

http://maven.apache.org

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

junit

junit

3.8.1

test

Ps:标签定义解释

根⽬录下的第⼀个⼦元素 ModelVersion指定当前Pom模型的版本,对于Maven3来说,它只能是4.0.0。

指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0

groupId定义了项⽬属于哪个组, 这个组往往和项⽬所在的组织和公司存在关联。

⽐如: com.xxxx

artifactId 定义了当前Maven项⽬在组中唯⼀的ID。

Version X.X.X-⾥程碑

⽐如:1.0.0-SNAPSHOT

第⼀个X ⼤版本 有重⼤变⾰

第⼆个X ⼩版本 修复bug,增加功能

3.2.2. 编写主函数

3.2.3. cmd 下编译并运⾏

cmd下⾯,进⼊项⽬的根⽬录

  1. 编译java⽂件

mvn compile

  1. 执⾏main ⽅法

mvn exec:java -Dexec.mainClass=“com.xxxx.demo.Hello”

注:第⼀次下载会⽐较慢,要修改maven解压之后的conf⽬录下的settings.xml。

第三个X 更新

⾥程碑版本:

SNAPSHOT (快照,开发版)

alpha(内部测试)

beta(公开测试)

Release | RC( 发布版)

GA(正常版本)

使⽤name标签声明⼀个对于⽤户更为友好的项⽬名称,虽然不是必须的,但还是推荐为每个Pom声明

name,以⽅便信息交流。

3.2.2. 编写主函数

package com.xxxx.demo;

public class Hello{

public static void main(String[] args) {

System.out.println(“hello maven”);

}

}

在这里插入图片描述

3.2.3. cmd 下编译并运⾏

1.修改默认仓库位置:打开maven⽬录 -> conf -> settings.xml

2.添加仓库位置配置

E:/maven/address

在这里插入图片描述

注:仓库位置改为⾃⼰本机的指定⽬录,"/"不要写反

3.更换阿⾥镜像,加快依赖下载

nexus-aliyun

central

Nexus aliyun

http://maven.aliyun.com/nexus/content/groups/public

4.cmd下⾯,进⼊项⽬的根⽬录

  • 编译java⽂件:mvn compile

在这里插入图片描述

  • 执⾏main ⽅法:mvn exec:java -Dexec.mainClass="com.xxxx.demo.Hello"

在这里插入图片描述

如果编译不成功,可能出现的问题

  • 1.不是使⽤管理员权限执⾏dos命令

  • 2.JDK环境配置有问题,重装JDK

  • 3.代码编写时,类⾥⾯没设置包名(如果编译时类没加包名,执⾏时也不需要加包名)

四、Maven命令

===========================================================================

作为开发利器的maven,为我们提供了⼗分丰富的命令,了解maven的命令⾏操作并熟练运⽤常⻅的maven命令还是⼗分必要的,即使譬如IDEA等⼯具给我提供了图形界⾯化⼯具,但其底层还是依靠maven命令来驱动的。

Maven的命令格式如下

mvn [plugin-name]:[goal-name]

命令代表的含义:执⾏ plugin-name 插件的 goal-name ⽬标

4.1. 常⽤命令


在这里插入图片描述

注意:运⾏maven命令的时候,⾸先需要定位到maven项⽬的⽬录,也就是项⽬的pom.xml⽂件所在的⽬录。否则,必以通过参数来指定项⽬的⽬录。

4.2. 命令参数


上⾯列举的只是⽐较通⽤的命令,其实很多命令都可以携带参数以执⾏更精准的任务。

4.2.1. -D 传⼊属性参数

例如:mvn package -Dmaven.test.skip=true

-D 开头,将 maven.test.skip 的值设为 true ,就是告诉maven打包的时候跳过单元测试。同理, mvn deploy-Dmaven.test.skip=true 代表部署项⽬并跳过单元测试

4.2.2. -P 使⽤指定的Profile配置

⽐如项⽬开发需要有多个环境,⼀般为开发,测试,预发,正式4个环境,在pom.xml中的配置如

下:

dev

dev

true

qa

qa

pre

pre

prod

prod

config/${env}.properties

src/main/resources

true

解释说明:profiles 定义了各个环境的变量 id , filters 中定义了变量配置⽂件的地址,其中地址中的环境

变量就是上⾯ profile 中定义的值, resources 中是定义哪些⽬录下的⽂件会被配置⽂件中定义的变

量替换。

通过maven可以实现按不同环境进⾏打包部署,例如:mvn package -Pdev -Dmaven.test.skip=true

表示打包本地环境,并跳过单元测试

五、IDEA编辑器集成Maven环境

====================================================================================

5.1. 设置Maven版本


选择 “File” —> “New Projects Settings / Other Settings” —> “Settings for New Projects…” —> 搜索 “Maven”

在这里插入图片描述

在这里插入图片描述

注意:点Apply后,记得点OK

六、Maven项⽬的创建

==============================================================================

6.1. 创建 Java项⽬


6.1.1. 新建项⽬

1)选择 “File” —> “New” —> “Project”

在这里插入图片描述2)选择"Maven",设置JDK版本,选择maven项⽬的模板

在这里插入图片描述3)设置项⽬的 GroupId 和 ArtifactId

在这里插入图片描述

4)检查Maven环境,选择 “Finish”(之前配置了环境)

在这里插入图片描述

5)等待项⽬创建,下载资源,创建完成后⽬录结构如下

在这里插入图片描述注:右下⻆弹出的提示框,选择 “Enable Auto-Import”(Maven启动⾃动导⼊)

6)如果需要用 resources资源目录 就手动创建

  • main目录下

在这里插入图片描述在这里插入图片描述

  • test(测试环境)目录下也有

在这里插入图片描述

6.1.2. 编译项⽬

1)点击右上⻆的 "Add Configurations ",打开 “Run/Debug Configurations” 窗⼝

在这里插入图片描述

2)点击左上⻆的 “+” 号,选择 “Maven”

在这里插入图片描述

3)设置编译项⽬的命令,先Apply后OK

在这里插入图片描述

4)执⾏编译命令,两个图标分别代表"普通模式"和"调试模式"

在这里插入图片描述

5)编译成功

在这里插入图片描述在这里插入图片描述

6.2. 创建 Web项⽬


6.2.1. 创建项⽬

**1)创建Web项⽬与创建Java项⽬步骤基本⼀致,区别在于选择 Maven模板(web项⽬选择

webapp),如图:**

在这里插入图片描述注意:其他步骤与创建普通的Java项⽬相同。

2)项⽬⽬录结构如下:

在这里插入图片描述

6.2.2. 修改配置文件

修改 JDK 的版本

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

设置单元测试的版本

junit

junit

4.12

test

删除pluginManagement标签

在这里插入图片描述

添加web部署的插件

在 build 标签中添加 plugins 标签,插入下面内容

  • Jetty插件

org.mortbay.jetty

maven-jetty-plugin

6.1.25

10

/test

<connector

implementation=“org.mortbay.jetty.nio.SelectChannelConnector”>

9090

  • Tomcat插件

org.apache.tomcat.maven

tomcat7-maven-plugin

2.1

8081

/test

UTF-8

tomcat7

6.2.3. 启动项⽬

1)点击右上⻆的 "Add Configurations ",打开 “Run/Debug Configurations” 窗⼝

在这里插入图片描述

2)点击左上⻆的 “+” 号,选择 “Maven”

在这里插入图片描述

3)Jetty插件配置

在这里插入图片描述

4)点击启动图标,启动服务

在这里插入图片描述

5)启动成功

在这里插入图片描述

6)浏览器效果如下

在这里插入图片描述

7)Tomcat插件配置

在这里插入图片描述

8)启动⽅式如上,启动成功

在这里插入图片描述

9)浏览器效果如下

在这里插入图片描述

Maven依赖仓库https://mvnrepository.com/

Tomcat7插件的命令https://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/plugin-info.html

七、Maven仓库的基本概念

================================================================================

当第⼀次运⾏Maven命令的时候, 你需要Internet链接, 因为它需要从⽹上下载⼀些⽂件。 那么它从哪⾥下载呢? 它是从Maven默认的远程库下载的。 这个远程仓库有Maven的核⼼插件和可供下载的jar⽂件。

对于Maven来说, 仓库只分为两类: 本地仓库和远程仓库。

当Maven根据坐标寻找构件的时候,它⾸先会查看本地仓库,如果本地仓库存在,则直接使⽤; 如果本地没有,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使⽤。 如果本地仓库和远程仓库都没有,Maven就会报错。

远程仓库分为三种: 中央仓库,私服, 其他公共库。

中央仓库是默认配置下,Maven下载jar包的地⽅。

私服是另⼀种特殊的远程仓库,为了节省带宽和时间,应该在局域⽹内架设⼀个私有的仓库服务器,⽤其代理所有外部的远程仓库。 内部的项⽬还能部署到私服上供其他项⽬使⽤。

⼀般来说,在Maven项⽬⽬录下,没有诸如lib/这样⽤来存放依赖⽂件的⽬录。 当Maven在执⾏编译或测试时,如果需要使⽤依赖⽂件,它总是基于坐标使⽤本地仓库的依赖⽂件。

默认情况下, 每个⽤户在⾃⼰的⽤户⽬录下都有⼀个路径名为.m2/repository/的仓库⽬录。 有时候,因为某些原因(⽐如c盘空间不⾜),需要修改本地仓库⽬录地址。

对于仓库路径的修改,可以通过maven 配置⽂件conf ⽬录下settings.xml来指定仓库路径

E:/maven/address

7.1. 中央仓库


由于原始的本地仓库是空的,maven必须知道⾄少⼀个可⽤的远程仓库,才能执⾏maven命令的时候下载到需要的构件。中央仓库就是这样⼀个默认的远程仓库。

maven-model-builder-3.3.9.jar maven⾃动的 jar 中包含了⼀个 超级POM。定义了默认中央仓库的

位置。

中央仓库包含了2000多个开源项⽬,接收每天1亿次以上的访问。

7.2. 私服


私服是⼀种特殊的远程仓库,它是架设在局域⽹内的仓库服务, 私服代理⼴域⽹上的远程仓库,供局域⽹内的maven⽤户使⽤。 当maven需要下载构件时, 它去私服当中找,如果私服没有, 则从外部远程仓库下载,并缓存在私服上, 再为maven提供。

此外,⼀些⽆法从外部仓库下载的构件也能从本地上传到私服提供局域⽹中其他⼈使⽤配置⽅式项⽬pom.xml 配置

true

public

Public Repositories

http://192.168.0.96:8081/content/groups/public/

getui-nexus

http://mvn.gt.igexin.com/nexus/content/repositories/releases/

公司内部应该建⽴私服

  • 节省⾃⼰的外⽹带宽

  • 加速maven构建

  • 部署第三⽅控件

  • 提⾼稳定性

  • 降低中央仓库的负荷

7.3. 其他公共库


常⽤的阿⾥云仓库配置

nexus-aliyun

central

Nexus aliyun

http://maven.aliyun.com/nexus/content/groups/public

八、Maven环境下构建多模块项⽬

===================================================================================

使⽤maven 提供的多模块构建的特性完成maven 环境下多个模块的项⽬的管理与构建。

这⾥以四个模块为例来搭建项⽬,以达到通俗易懂的初衷

模块 maven_parent —– 基模块,就是常说的parent (pom)

模块 maven_dao —– 数据库的访问层,例如jdbc操作(jar)

模块 maven_service —– 项⽬的业务逻辑层 (jar)

模块 maven_controller —– ⽤来接收请求,响应数据 (war)

8.1. 创建 maven_parent 项⽬


1)选择 File —> Settings —> Project

在这里插入图片描述

2) 设置项⽬名称及⼯作空间,GroupId 和 ArtifactId

在这里插入图片描述

8.2. 创建 maven_dao 模块


1)选择项⽬maven_parent,右键选择 New ,选择Module

在这里插入图片描述

2)选择Maven项⽬的模板(普通 Java 项⽬)

在这里插入图片描述

3)设置⼦模块的名称及存放位置,设置⼦模块的的 ArtifactId

在这里插入图片描述

4)设置Maven的配置(默认就行)

在这里插入图片描述

8.3. 创建 maven_service 模块


创建 maven_service 模块的步骤与 maven_dao模块⼀致。

8.4. 建 maven_controller 模块


创建 maven_controller 模块的步骤与 maven_dao模块基本⼀致,只需要将第⼀步选择Maven模板设置

为web项⽬即可。(模板类型:maven-archetype-webapp)

模块全部创建完毕后,效果如下:

在这里插入图片描述

8.5. 修改模块的配置


  • 设置 JDK 版本

  • 单元测试 JUnit版本

  • 删除多余的配置

8.6. 设置模块之间的依赖


8.6.1. maven_dao

1)新建包 dao

在这里插入图片描述

2)在包中创建 UserDao类

在这里插入图片描述

在这里插入图片描述

3)在类中添加⽅法

package com.xxx.dao;

public class UserDao {

public static void testDao() {

System.out.println(“UserDao Test…”);

}

}

8.6.2. maven_service

1)添加maven_dao的依赖

com.xxx

maven_dao

1.0-SNAPSHOT

在这里插入图片描述

2)新建包 service

3)在包中创建 UserService类

4)在类中添加⽅法

package com.xxx.service;

import com.xxx.dao.UserDao;

public class UserService {

public static void testService() {

System.out.println(“UserService Test…”);

// 调⽤UserDao的⽅法

UserDao.testDao();

}

}

8.6.3. maven_controller

1)添加 maven_service 模块的依赖

com.xxx

maven_service

1.0-SNAPSHOT

2)添加Servlet的依赖

javax.servlet

javax.servlet-api

3.0.1

provided

在这里插入图片描述

3)main下创建一个java包,补全下面文件

在这里插入图片描述

在这里插入图片描述

4)继承 HttpServlet 类,并重写 service⽅法

package com.xxx.controller;

import com.xxx.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 {

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“UserServlet Test…”);

// 调⽤UserService层的⽅法

UserService.testService();

}

}

5)添加Tomcat插件

org.apache.tomcat.maven

tomcat7-maven-plugin

2.1

/web

UTF-8

tomcat7

在这里插入图片描述

6)启动项⽬

在这里插入图片描述

7)访问项⽬

在这里插入图片描述

8)如果启动失败,请先将⽗项⽬ install

在这里插入图片描述注意:如果⽗项⽬ install 失败,则先将所有⼦模块 install 成功后,再 install ⽗项⽬。

然后依次去启动一下

在这里插入图片描述

在这里插入图片描述

最后启动:tomcat7,访问浏览器,控制台显示如下:

在这里插入图片描述

九、Maven的打包操作

==============================================================================

对于企业级项⽬,⽆论是进⾏本地测试,还是测试环境测试以及最终的项⽬上线,都会涉及项⽬的打包操作,对于每个环境下项⽬打包时,对应的项⽬所有要的配置资源就会有所区别,实现打包的⽅式有很多种,可以通过ant,获取通过idea ⾃带的打包功能实现项⽬打包,但当项⽬很⼤并且需要的外界配置很多时,此时打包的配置就会异常复杂,对于maven 项⽬,我们可以⽤过pom.xml 配置的⽅式来实现打包时的环境选择,相⽐较其他形式打包⼯具,通过maven 只需要通过简单的配置,就可以轻松完成不同环境先项⽬的整体打包。

⽐如下⾯这样⼀个项⽬,项⽬中配置了不同环境下项⽬所需要的配置⽂件,这时候需要完成不同环境下的打包操作,此时通过修改pom.xml 如下:

9.1. 建⽴对应的⽬录结构


使⽤idea创建项⽬,⽬录结构可能会缺失,需要通过⼿动添加对应的⽬录。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
包的配置就会异常复杂,对于maven 项⽬,我们可以⽤过pom.xml 配置的⽅式来实现打包时的环境选择,相⽐较其他形式打包⼯具,通过maven 只需要通过简单的配置,就可以轻松完成不同环境先项⽬的整体打包。

⽐如下⾯这样⼀个项⽬,项⽬中配置了不同环境下项⽬所需要的配置⽂件,这时候需要完成不同环境下的打包操作,此时通过修改pom.xml 如下:

9.1. 建⽴对应的⽬录结构


使⽤idea创建项⽬,⽬录结构可能会缺失,需要通过⼿动添加对应的⽬录。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-F1hbGWUH-1713513884170)]

[外链图片转存中…(img-ku5dsjph-1713513884170)]

[外链图片转存中…(img-OfxXth05-1713513884171)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

[外链图片转存中…(img-yUSDaZi9-1713513884171)]

[外链图片转存中…(img-iKNowade-1713513884171)]

[外链图片转存中…(img-wosNosFN-1713513884172)]

[外链图片转存中…(img-1EoWbypp-1713513884172)]

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

[外链图片转存中…(img-3m98xat5-1713513884172)]

[外链图片转存中…(img-Fl0rPNBE-1713513884172)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值