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项目。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据脱敏(三)脱敏算法-遮盖算法

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 遮盖脱敏是一种数据脱敏技术&#xff0c;它的主要目的是通过隐藏或替换敏感信息来保护数据安全&#xff0c;同时保持数据的其他特性不变&#xff0c;以便于数据的进一步使用和分析。这种脱敏技术适…

九州金榜|过年期间如何合理规划孩子学习?

随着春节的临近&#xff0c;家家户户都沉浸在喜庆的氛围中。对于孩子们来说&#xff0c;过年意味着热闹、欢笑和丰盛的美食。然而&#xff0c;即使是过年&#xff0c;学习也不应被忽视。九州金榜家庭教育将和大家一起探讨如何合理安排过年期间孩子的学习。 一、保持学习持续性 …

探索编程世界的利器!选择哪个IDE,成就新手开发之路?

文章目录 一、IDE的概念和作用IDE是什么&#xff1f;为什么说选择一款IDE对开发者来说可以起到事半功倍的作用&#xff1f; 二、当下备受推崇的IDE有哪些&#xff1f;1. Visual Studio Code2. PyCharm3. IntelliJ IDEA 三、如何选择一个适合自己的IDE&#xff1f;四、IDE的使用…

React-Native项目 — 自定义字体的使用

系列文章目录 React-Native环境搭建&#xff08;IOS&#xff09;React-Native项目 — 关于IOS知识储备React-Native项目工程搭建&#xff08;开发模板搭建&#xff09;React-Native项目矢量图标库&#xff08;react-native-vector-icons&#xff09; 目录 系列文章目录前言一、…

Linux多线程——生产消费者模型

Gitee仓库&#xff1a;阻塞队列、环形队列 文章目录 1. 死锁1. 1 死锁概念1.2 死锁的四个必要条件1.3 解决死锁 2. 线程同步3. 条件变量3.1 举个例子3.2 接口 4. 生产消费者模型4.1 什么是生产消费者模型4.2 基于阻塞队列的生产消费模型4.3 环形队列&#xff08;信号量&#xf…

electron-vue更新到最新版本无法使用解决

更新版本&#xff1a; 网上说使用yarn upgrade-interactive --latest但是我这无法运行 所以我是使用以下命令进行更新的&#xff0c;不要急一条一条执行&#xff1a; yarn add electron yarn add electron-builder yarn add electron-debug yarn add electron-devtools-insta…

数据目录驱动测试——深入探讨Pytest插件 pytest-datadir

在软件测试中,有效管理测试数据对于编写全面的测试用例至关重要。Pytest插件 pytest-datadir 提供了一种优雅的解决方案,使得数据目录驱动测试变得更加简单而灵活。本文将深入介绍 pytest-datadir 插件的基本用法和实际案例,助你更好地组织和利用测试数据。 什么是pytest-da…

centos 安装mysql5.7教程

一&#xff0c;配置yum mysql5.7安装源 配置yum mysql5.7安装源 yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 配置mysql5.7安装源成功 查看配置成功的安装源 yum repolist enabled | grep "mysql*" 执行后看到已配…

matlab窗函数-hann窗和hamming窗函数

窗函数的作用 在时域上&#xff0c;窗函数可以看作是对原始信号进行截断或调制的加权函数。这些窗函数通常在时域上是有限的宽度&#xff0c;并且具有对称性&#xff0c;如矩形窗、汉宁窗、汉明窗和布莱克曼窗等。例如&#xff0c;汉明窗是一种对称窗函数&#xff0c;它可以用…

揭秘淘宝图片搜索商品接口:一键上传,海量相似商品即刻到手!

淘宝图片搜索商品接口技术详解 一、概述 淘宝图片搜索商品接口是淘宝开放平台提供的一项创新功能&#xff0c;允许第三方开发者通过上传图片进行商品搜索。通过使用这个接口&#xff0c;开发者可以快速地获取与图片相似的商品信息&#xff0c;为消费者提供更精准的购物体验。…

【嵌入式学习】C++QT-Day1-C++基础

思维导图&&笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业&#xff1a; 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream&…

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件&#xff0c;主要用于与用户进行交互。每个UIAbility组件实例对应最近任务列表中的一个任务&#xff0c;可以包含多个页面来实现不同功能模块。 声明配置 为了使用UIAbility&#xff0c;首先需要在mod…

Python环境的安装和Pycharm的安装

Python环境的安装 英文版官网&#xff1a;Welcome to Python.org&#xff0c; 因为是外网&#xff0c;加载可能会很慢 首先呢&#xff0c;我们先去官网查找&#xff1a;Python中文网 官网&#xff0c;这个官网是中文版的&#xff0c;点进去之后是这个页面 然后点击下载&#…

【LeetCode每日一题】2859. 计算 K 置位下标对应元素的和

2024-1-25 文章目录 [2859. 计算 K 置位下标对应元素的和](https://leetcode.cn/problems/sum-of-values-at-indices-with-k-set-bits/)思路&#xff1a; 2859. 计算 K 置位下标对应元素的和 思路&#xff1a; 遍历输入列表&#xff0c;对于满足特定条件的元素做一些操作并将结…

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…

Sketch怎么增加组件?

Sketch怎么增加组件&#xff1f;Sketch组件库经常使用&#xff0c;想要添加一些新的组件&#xff0c;该怎么添加呢&#xff1f;下面我们就来看看Sketch组件库添加新组建的技巧&#xff0c;详细请看下文介绍 打开电脑&#xff0c;找到sketch软件的图标&#xff0c;点击进入 新建…

鸿蒙开发-UI-布局-轮播

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 鸿蒙开发-UI-布局-相对布局 鸿蒙开发-UI-布局-格栅布局 鸿蒙开发-UI-布局-列表 鸿蒙开发-UI-布局-网格 文章目录 前言 一、基本概念 二、开发布局 三、应用特性 1.循环播放 2…

docker(上)

笔记资料参考与尚硅谷 前提知识课程介绍课程定位学习建议 1前提知识 boot cloud git push pull redis nginx mysql... Linux centos ubuntu 2课程介绍 2.1 2018 vs 2022 2.2 k8s&#xff08;雷峰崖&#xff09; 2.3 大纲 3课程定位&#xff08;因材施教量体裁衣…

电商API接口|爬虫实战-js逆向,以淘宝sign为例

如果我们想要获取某宝的商品信息或者商品的评论信息的话。可能其中的一条途径就是爬虫了【淘宝商品详情API】。放在以前的话&#xff0c;爬虫还是挺简单的。但是放到现在呢&#xff0c;其实并不容易了。因为现在各个平台的反爬机制都加强了。有的会加强监控的&#xff0c;有的则…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目&#xff01;今天和大家分享一下&#xff0c;如何使用IntelliJ IDEA里面的maven插件&#xff0c;来快速搭建一个简单的Springboot基础项目。 第一步&#xff0c;菜单里面找到&#xff0c;文件-》新建-项目。如图。我们勾选了是…