【Maven教程与实战案例】

文章目录

  • 前言
  • 一、Maven是什么?
  • 二、Maven的安装与配置
    • 1. 安装前置条件
    • 2. 下载与配置 Maven
    • 3. 验证安装
  • 三、Maven的核心概念
    • 1. POM.xml 文件
    • 2. 构建生命周期与插件机制
  • 四、实战项目示例
    • 1. 项目目录结构
    • 2. 编写代码
      • App.java
      • AppTest.java
    • 3. 构建项目
    • 4. 运行项目


前言

随着 Java 项目的日益增多,如何高效地管理项目依赖、构建过程以及版本控制成为开发中的重要课题。Apache Maven 作为目前流行的项目管理工具,提供了一整套标准化的项目构建流程和依赖管理方案。


一、Maven是什么?

Maven 是 Apache 软件基金会提供的一款开源项目管理工具,其核心目标是使项目构建、依赖管理和发布流程自动化、标准化。其主要特点包括:

  • 依赖管理:通过 POM(Project Object Model)文件来管理项目所需的依赖库,Maven 会自动下载和更新这些依赖包。
  • 构建管理:内置了一套标准化的构建生命周期(如 clean、compile、test、package、install、deploy 等),极大简化了编译、测试、打包等过程。
  • 统一项目结构:Maven 推荐统一的目录结构,有助于项目的代码管理和团队协作。

二、Maven的安装与配置

在使用 Maven 之前,需确保系统中已安装 JDK,并配置好 JAVA_HOME 环境变量。以下是安装和配置 Maven 的基本步骤:

1. 安装前置条件

  • JDK 安装:下载并安装 JDK,建议使用 JDK 8 或更高版本。
  • 配置 JAVA_HOME:设置 JAVA_HOME 环境变量,指向 JDK 的安装目录。

2. 下载与配置 Maven

  1. 前往 Apache Maven 官网下载最新版本(例如 apache-maven-3.8.6)。
  2. 解压下载的压缩包到合适的目录,并设置 MAVEN_HOME 环境变量指向该目录。
  3. MAVEN_HOME/bin 添加到系统 PATH 环境变量中。

3. 验证安装

在终端中执行以下命令:

mvn -v

示例输出:

Apache Maven 3.8.6
Maven home: /path/to/apache-maven-3.8.6
Java version: 1.8.0_281, vendor: Oracle Corporation

三、Maven的核心概念

1. POM.xml 文件

POM(Project Object Model)文件是 Maven 项目的核心配置文件,记录了项目的基本信息、依赖管理、插件配置等。

<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.example</groupId><artifactId>maven-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!-- 示例:添加 JUnit 依赖用于测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</project>

说明

  • groupId:标识项目所属的组织或包名。
  • artifactId:项目名称。
  • version:项目当前版本。
  • dependencies:定义了项目所依赖的库,Maven 会自动下载这些依赖。

2. 构建生命周期与插件机制

Maven 定义了一套标准化的构建生命周期,主要阶段包括:

  • clean:清除上一次构建生成的文件。
  • compile:编译项目源码。
  • test:运行单元测试。
  • package:将编译后的代码打包成 JAR 或 WAR 文件。
  • install:将生成的包安装到本地 Maven 仓库,供其他项目使用。
  • deploy:将包发布到远程仓库。

Maven 通过插件扩展构建功能,例如:

  • maven-compiler-plugin:用于编译 Java 代码。
  • maven-surefire-plugin:用于执行测试用例。

四、实战项目示例

1. 项目目录结构

Maven 项目目录结构如下:

maven-demo/├── pom.xml└── src/├── main/│   └── java/│       └── com/│           └── example/│               └── App.java└── test/└── java/└── com/└── example/└── AppTest.java

2. 编写代码

App.java

创建位于 src/main/java/com/example/ 目录下的 App.java 文件:

package com.example;public class App {public static void main(String[] args) {System.out.println("Hello, Maven!");}
}

AppTest.java

创建位于 src/test/java/com/example/ 目录下的 AppTest.java 文件:

package com.example;import org.junit.Test;
import static org.junit.Assert.*;public class AppTest {@Testpublic void testApp() {// 简单的断言示例,确保测试框架能正常工作assertTrue(true);}
}

3. 构建项目

在项目根目录下执行以下命令进行编译、测试和打包:

mvn clean package

说明

  • clean 命令清理之前生成的编译文件。
  • package 命令会执行编译、测试并将项目打包成 JAR 文件。
    Maven 会根据 POM 文件中的依赖配置自动下载所需的库。

4. 运行项目

打包成功后,可以在 target 目录下找到生成的 JAR 文件。使用以下命令运行:

java -jar target/maven-demo-1.0-SNAPSHOT.jar

运行结果将显示:

Hello, Maven!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33049.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序:实现多功能表格效果,例如滚动效果、宽度自定义、多选、行内编辑等功能

一、表格效果 1、实现功能 表格实现可横向水平滚动表格、宽度自定义、文本编辑、数字加减、多选&#xff0c;行选中效果&#xff0c;获取选中行数据等功能 2、图片效果 二、代码 1、wxml 根据头循环将表格头进行循环&#xff0c;再通过昂循环展示行内的全部信息&#xff0…

uni-app vue2 记住密码功能

1. html代码 <checkbox-group change"checkboxChange"><label><checkbox value"" :checked"ifSavePwd" style"transform: scale(0.6);"/>记住密码</label> </checkbox-group>2. js代码 默认复选款是不…

深度学习优化-Gradient Checkpointing

数学原理参考&#xff1a; 梯度检查点技术&#xff08;Gradient Checkpointing&#xff09;详细介绍&#xff1a;中英双语-CSDN博客 视频讲解参考&#xff1a; 用梯度检查点来节省显存 gradient checkpointing_哔哩哔哩_bilibili Gradient Checkpointing&#xff08;梯度检查…

sql靶场-时间盲注(第九、十关)保姆级教程

目录 时间盲注&#xff08;第九、十关&#xff09; 1.判断 2.确认时间盲注 2.手工尝试时间盲注 数据库名长度 数据库名字符 表数 表名长度 表名字符 字段数 字段名长度 字段名字符 4.脚本时间盲注注入 5.第十关 时间盲注&#xff08;第九、十关&#xff09; 1.判…

小米路由器SSH下安装DDNS-GO

文章目录 前言一、下载&#xff06;安装DDNS-GO二、配置ddns-go设置开机启动 前言 什么是DDNS&#xff1f; DDNS&#xff08;Dynamic Domain Name Server&#xff09;是动态域名服务的缩写。 目前路由器拨号上网获得的多半都是动态IP&#xff0c;DDNS可以将路由器变化的外网I…

Flutter_学习记录_device_info_plus 插件获取设备信息

引入三方库device_info_plus导入头文件 import package:device_info_plus/device_info_plus.dart;获取设备信息的主要代码 DeviceInfoPlugin deviceInfoPlugin DeviceInfoPlugin(); BaseDeviceInfo deviceInfo await deviceInfoPlugin.deviceInfo;完整案例 import package…

【现代深度学习技术】卷积神经网络05:汇聚层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Amazon RDS ProxySQL 探索(一)

:::info &#x1f4a1; 在日常开发中&#xff0c;开发者们会涉及到数据库的连接&#xff0c;在使用Amazon RDS数据库时&#xff0c;若使用集群模式或者多数据库时&#xff0c;会出现一写多读多个Endpoint&#xff0c;在实际开发中&#xff0c; 开发者们配置数据库连接通常希望走…

Appium高级操作--ActionChains类、Toast元素识别、Hybrid App操作、手机系统API的操作

书接上回Appium高级操作--从源码角度解析--模拟复杂手势操作-CSDN博客文章浏览阅读712次&#xff0c;点赞24次&#xff0c;收藏6次。下面总结Appium模拟复杂手势整体流程创建类实例action时&#xff0c;一定要传入WebDriver实例参数&#xff0c;创建实例成功后&#xff0c;调用…

媲美Deepseek R1 671B的千问QwQ32B本地部署与远程访问实测流程

文章目录 前言1. 环境准备2.QwQ 32B模型安装与运行测试3. 安装Open WebUI图形化界面3.1 安装Open WebUI3.2 添加QWQ32B模型 4. 安装内网穿透工具5. 配置固定公网地址总结 前言 近日&#xff0c;阿里千问发布了最新推理模型QwQ32B &#xff01;并表示“它只有 320亿参数&#x…

SpringBoot整合RabbitMq

1.引入依赖 <!--RabbitMq相关--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>2.application.yml文件配置 spring:rabbitmq:host: 192.168.101.129…

2024年第十五届蓝桥杯软件C/C++大学A组——五子棋对弈

蓝桥杯原题&#xff1a; 题目描述&#xff1a; “在五子棋的对弈中&#xff0c;友谊的小船说翻就翻&#xff1f; ” 不&#xff01;对小蓝和小桥来说&#xff0c;五子棋不仅是棋盘上的较量&#xff0c;更是心与心之间的沟通。这两位挚友秉承着 “ 友谊第一&#xff0c;比赛第二…

PyQt基础——简单的图形化界面(窗口)

一、代码展示 import sysfrom PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QWidget, QApplication, QLabel, QLineEdit, QPushButton from PyQt6 import uic from PyQt6.QtCore import Qt# 封装一个我的窗口类 class MyWidget(QWidget):def __init__(self):supe…

大语言模型-1.2-大模型技术基础

简介 本博客内容是《大语言模型》一书的读书笔记&#xff0c;该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品&#xff0c;覆盖大语言模型训练与使用的全流程&#xff0c;从预训练到微调与对齐&#xff0c;从使用技术到评测应用&#xff0c;帮助学员全面掌握大语言模型的…

【MATLAB例程】AOA(到达角度)法,多个目标定位算法,三维空间、锚点数量自适应(附完整代码)

给出AOA方法下的多目标定位,适用三维空间,锚点数量>3即可,可自定义目标和锚点的数量、坐标等。 文章目录 运行结果源代码代码讲解概述功能代码结构运行结果 10个锚点、4个目标的情况: 100个锚点、10个目标的情况: 修改方便,只需调节下面的两个数字即可: 源代码 …

[CVE-2017-10271]Weblogic--WLS Security反序列化漏洞复现

文章目录 靶机地址靶机说明开启并访问靶机POCexp反弹shell后续查找flag过程略 靶机地址 网站地址 cyberstrikelab.com 靶机地址CVE-2017-10271 靶机说明 Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其中使用了XMLDecoder来解析用户传入的XML数据&#xf…

如何在vscode中编译linux中的c++文件

方式一 在终端打开进行连接编译 指令含义&#xff1a;将 muduo_server.cpp 源文件编译成一个可执行文件 server&#xff0c;并且在链接过程中使用 muduo_net、muduo_base 库以及 pthread 库 方式二 在vscode中修改配置文件 按F1打开配置文件搜索栏&#xff0c;输入C/C 打开…

Unity中刚体撞墙抖动的原因和本质

当我们制作角色移动的时候我们都知道使用设置位置的方法来移动一个带有刚体和碰撞体的物体&#xff0c;遇到碰撞体的时候就会抖动。 上网查找原因&#xff0c;都说是和物理系统冲突导致的&#xff0c;然后再也找不到其他线索。 这个说法&#xff0c;对&#xff0c;但它并不是最…

文件解析漏洞靶场通关合集

一、IIS解析漏洞 &#xff08;一&#xff09;iis6的目录解析漏洞(.asp目录中的所有文件都会被当做asp文件执行) 第一步&#xff1a;在网站根目录下创建了一个x.asp文件夹&#xff0c;并在文件夹中创建一个名为1.txt的文本文档 第二步&#xff1a;文本文档中输入<% now()%&…

【Linux】浅谈冯诺依曼和进程

一、冯诺依曼体系结构 冯诺依曼由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。 冯诺依曼的设计特点 二进制表示 所有数据&#xff08;包括程序指令&#xff09;均以二进制形式存储和运算&#xff0c;简化了硬件逻辑设计&#xff0c;提高了可靠性。 存储程序原理…