Maven构建工具:Java项目的不可或缺之选

2024-01-26 00:04

本文主要是介绍Maven构建工具:Java项目的不可或缺之选,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

在Java开发领域,构建工具是项目中至关重要的一环。Maven(Maven Apache)是一个强大的构建工具,用于管理项目的构建、依赖和文档等方面。本篇博文将介绍如何配置和使用Maven来构建和管理Java项目。

第一部分:Maven基础概念

在这里插入图片描述

1.1 什么是Maven?

Maven是一个基于项目对象模型(Project Object Model, POM)的项目管理工具。它提供了一种标准的方式来构建和管理项目,包括项目的编译、测试、打包、发布等操作。
自动化构建工具还有:Ant, Gradle。

第二部分:Maven 的核心概念

2.1 Maven 工程约定目录结构

java-maven

|---src                          源代码
|---|---main                     主程序
|---|---|---java                 主程序的 java 源码
|---|---|---resources            主程序的配置文件
|---|---test                     测试程序
|---|---|---java                 测试程序的 java 源码
|---|---|---resources            测试程序的配置文件
|---pom.xml                      Maven工程的核心配置文件。
名称基本信息
modelVersionMaven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0
groupId组织 id,一般是公司域名的倒写。
artifactId项目名称,也是模块名称,对应 groupId 中 项目中的子项目。
version项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT
packaging项目打包的类型,可以使 jar、war、rar、ear、pom,默认是 jar
dependency管理 jar 包
properties定 义 配 置 属 性设置为UTF-8,防止中文乱码
buildbuild 表示与构建相关的配置,例如设置编译插件的 jdk 版本
parent声明要继承的父工程的 pom 配置
modules使用 modules 聚合的其它模块

2.2 仓库

1、Maven 的插件,插件也是一些 jar,这些 jar 可以完成一定的功能。
2、我们自己开发项目的模块
3、第三方框架或工具的 jar 包
本地仓库:本机当前电脑上的资源存储位置,为本机上所有 Maven工程提供服务
远程仓库:不在本机上, 通过网络才能使用。多电脑共享使用的
①:中央仓库:通过Internet访问,为全世界所有 Maven工程服务。 最权威的。
②:中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库
的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器。
③:私服:在局域网环境中部署的服务器,为当前局域网范围内的所有 Maven工程服务。公司中常常使用这种方式。
资源搜索地址:https://mvnrepository.com/
在这里插入图片描述

maven-search:插件搜索
在这里插入图片描述

第三部分:Maven的常用命令

3.1 mvn clean

清理项目,删除target目录。

mvn clean

3.2 mvn compile

编译项目源代码。

mvn compile

3.3 mvn test

运行项目的测试单元。

mvn test

3.4 mvn package

将项目打包,生成JAR或WAR文件。

mvn package

3.5 mvn install

将项目打包并安装到本地仓库,以供其他项目引用。

mvn install

3.6 mvn deploy

部署主程序

mvn deploy

第四部分:插件

maven 过程构建周期,由 maven 的插件 plugin 来执行完成。
官网插件说明:http://maven.apache.org/plugins/

第五部分:依赖管理

5.1 依赖的范围

依赖的范围:compiletestprovided,默认采用 compile

在这里插入图片描述

第六部分:Maven 常用设置

6.1 全局变量

在 Maven 的 pom.xml 文件中,用于定义全局变量,POM 中通过${property_name}的形式引用变量的值。
定义全局变量:

 <properties><mysql.version>8.0.28</mysql.version></properties>

6.2 引用全局变量:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version>
</dependency>

6.3 Maven 系统采用的变量:

<properties><maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本<maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目构建使用的编码,避免中文乱
码<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码</properties>

6.4 指定资源位置

src/main/java 和 src/test/java 这两个目录中的所有*.java 文件会分别在 comile 和 test-comiple 阶段被编译,编译结果分别放到了 target/classes 和 targe/test-classes 目录中,但是这两个目录中的其他文件都会被忽略掉,如果需要把 src 目录下的文件包放到 target/classes 目录,作为输出的 jar 一部分。需要指定资源文件位置。以下内容放到< buid>标签中。

    <build><resources><resource><directory>src/main/java</directory><!--所在的目录--><includes><!--包括目录下的.properties,.xml 文件都会扫描到--><include>**/*.properties</include><include>**/*.xml</include></includes>
<!--                filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 --><filtering>false</filtering></resource></resources></build>

第七部分:使用Maven构建Java项目

7.1 创建Maven项目

使用以下命令在命令行中创建一个新的Maven项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

在这里插入图片描述

7.2 构建和运行项目

在项目目录下运行以下命令来构建和运行项目:

mvn clean package
java -jar target/my-project-1.0-SNAPSHOT.jar

结语

Maven作为Java项目的构建工具,具有强大的功能和丰富的生态系统。通过本篇博文,你应该对Maven的基本概念、常用命令以及配置文件有了更深入的了解。使用Maven可以帮助你更轻松地管理项目的构建和依赖,提高开发效率。希望本篇博文能够帮助你更好地使用Maven构建和管理Java项目。

这篇关于Maven构建工具:Java项目的不可或缺之选的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645056

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件