Java基础教程 - 14 Maven项目

news2024/11/26 2:23:43

更好的阅读体验:点这里 ( www.doubibiji.com

14 Maven项目

Java 为什么那么强大,很大一部分原因是在实际的开发中,可以将别人开发的模块引入到我们自己的项目中,这样别人开发好了,我拿来就可以使用,很多复杂的功能也不用我们再去开发,而且别人开发的功能通常经过广泛的测试和验证,安全性和稳定性也得到保证,我们直接使用既可以提高开发效率,又可以提高项目质量。

14.1 jar包

那么如何在我们的项目中引入第三方开发的模块呢?

首先在 Java 中,可以将第三方的模块作为依赖引入到我们自己的项目中。这些依赖一般是以 Jar 包的方式存在。Jar(Java Archive)包是 Java 的一种文档格式,与平台无关,可将多个文件合成一个文件。JAR 包本质上是一个类的工具包,引入 Jar 包后,就可以直接使用其中的类。

通过引入第三方 Jar 包,可以快速、安全的在我们的项目中使用别人开发好的功能。

但是在实际的开发中,项目会引入很多很多的第三库,也就是在项目中会存在很多很多的 jar 包,如何清晰、规范的管理这些 jar 包也是一个问题。这个时候我们可以使用 Maven 来对项目进行构建和依赖的管理。

14.2 新建一个 Maven 项目

使用 IDEA 新建一个 Java 项目:

Build system 选择使用 Maven

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

新建完项目,项目结构如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后面我们新建 java 类,可以在 java 目录下新建包,在包下新建类就可以了。

resources 目录可以放一些资源文件,例如项目的配置文件。

pom.xmlMaven 用来管理项目的配置文件,用来管理项目结构和项目依赖等。

14.3 引入第三方依赖

我们在实际的开发中,经常会用到一些方法,例如判断字符是否为空,判断集合是否为空等,这些方法 JDK 中虽然有提供,但是使用起来还是不够方便,有很多第三方提供了工具包,将这些处理封装成了工具类,其中用的比较多的是 Hutool 包(官网:www.hutool.cn)。

下面就以在项目中引入 hutool 包依赖为例,介绍一下如何使用 Maven 引入hutool 包依赖。

首先项目在上面已经建好了。

1 引入依赖

在项目下的 pom.xml 中的 <dependencies> 标签下添加如下内容:

<!-- 引入hutool -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.26</version>
</dependency>

此时 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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.doubibiji</groupId>
    <artifactId>hello-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 引入hutool -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.26</version>
        </dependency>
    </dependencies>

</project>

添加完依赖配置可能会报红,因为虽然添加了依赖,但是对应的依赖 jar 包还没有下载下来,此时可以右键 pom.xml 加载项目,会重新下载依赖。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此时查看项目下依赖,也可以看到 hutool 包的依赖:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 使用第三方类

hutool 包依赖已经引入了,下面可以使用 hutool 包中的类了。

新建包和类,名称你自己定,例如:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


然后就可以编写 HutoolTest 测试类了:

下面简单使用了一下字符串、集合、时间的工具类,hutool 包中有很多的工具类,这里就不一一介绍了。

package com.doubibiji.hellomaven;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class HutoolTest {
    public static void main(String[] args) {
        String abc = "";
        // 字符串工具类
        if (StrUtil.isEmpty(abc)) {
            System.out.println("abc为空");
        }

        List<String> List = new ArrayList<>();
        // 集合工具类
        if (CollUtil.isEmpty(List)) {
            System.out.println("List为空");
        }


        Date date = new Date();
        // 时间工具类,默认格式
        System.out.println(DateUtil.formatDateTime(date));
        // 指定格式
        System.out.println(DateUtil.format(date, "yyyy-MM-dd HH:mm"));

        LocalDateTime dateTime = LocalDateTime.now();
        // 新的时间工具类,默认格式
        System.out.println(LocalDateTimeUtil.formatNormal(dateTime));
        // 指定格式
        System.out.println(LocalDateTimeUtil.format(dateTime, "yyyy-MM-dd HH:mm"));
    }
}

上面简单讲解了一下使用 Maven 为项目引入第三方的依赖 Jar 包,使用第三方 jar 包中提供的功能。Maven 更复杂的功能需要单独学习 Maven 教程, 这里就不介绍了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android电量优化,让你的手机续航更持久

节能减排&#xff0c;从我做起。一款Android应用如果非常耗电&#xff0c;是一定会被主人嫌弃的。自从Android手机的主人用了你开发的app&#xff0c;一天下来&#xff0c;也没干啥事&#xff0c;电就没了。那么他就会想尽办法找出耗电量杀手&#xff0c;当他找出后&#xff0c…

把chatgpt当实习生,进行matlab gui程序编程

最近朋友有个项目需要整点matlab代码&#xff0c;无奈自己对matlab这种工科的软件完全是外行&#xff0c;无奈只有求助gpt这种AI助手了。大神们告诉我们&#xff0c;chatgpt等的助手已经是大学实习生水平啦&#xff0c;通过多轮指令交互就可以让他帮你完成工作啦&#xff01;所…

从《千脑智能》看大模型

千脑智能与大模型 千脑智能介绍 世界模型千脑智能理论——对大脑的全新理解旧大脑&#xff1a;演化的历史烙印新大脑&#xff1a;智慧的创新引擎新旧大脑的互动与争斗启示与借鉴 大脑对信息的处理和建模六根六尘六识 新脑&#xff1a;智能的创新中枢旧脑&#xff1a;生存的本能…

下决心!学点前端图形开发来提升自已

前端图形开发已成为Web开发绕不开的部分。提升自己前端图形开发能力&#xff0c;才能快点在岗位中突围。但一看到各大实战教程的学习路径就犯难了。 内容不少&#xff0c;感觉学到老也跳不出来啊。还是走回老路&#xff1f;搞个热门国外开源框架应付算了。 我简单通过对图形系…

【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-09 1…

正大国际期货:什么是主力合约?

一个期货品种&#xff0c;在同一时间段&#xff0c;会上市多个月份的合约&#xff0c; 由于主力合约交易量大&#xff0c;流动性高&#xff0c;一般建议新手交易主力合约。 主力合约通常指交易集中&#xff0c;流动性好的合约 &#xff0c;即在一段时间内交易量和持仓量最大的…

当前 Python 版本中所有保留字keyword.kwlist

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 当前 Python 版本中 所有保留字 keyword.kwlist [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是正确的&#xff1f; import keyword print("【执行】keyword.kwlist"…

Codeforces Round 951 (Div. 2)C. Earning on Bets

Problem - C - Codeforces 合理的答案&#xff1a; 求出 k1 ~ kn 的最小公倍数lcm&#xff0c;如果 lcm/k1 lcm/k2 ... lcm/kn < lcm 即符合题意。 左边之和为我们付的总钱数&#xff0c;右边才是每次选择得到的钱数(都为lcm)。 直接拿1e9检查是否可以分即可&#xff…

陆面生态水文模拟与多源遥感数据同化技术

原文链接&#xff1a;陆面生态水文模拟与多源遥感数据同化技术 了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;熟悉模 型的发展历程&#xff0c;常见模型及各自特点;理解Noah-MP模型的原理&#xff0c;掌握Noah-MP 模型在单 站和区域的模拟、模拟结果的…

CloudFlare 防火墙规则里开放合法 Bot 爬虫的方法

明月使用 CloudFlare 也算是有一阵子了,可以说效果非常好更是非常满意,毕竟每天成千上万的 Web 攻击和 cc 攻击都能控制在几乎可以忽略不计的程度了,上次因调试需要关闭了国内线路上的网站卫士统计图覆对比就很能说明这点儿: 这是关闭防火墙当天的实时防御统计结果 这是开启…

MySQL经典面试题:谈一谈对于数据库索引的理解~~

文章目录 什么是索引&#xff1f;为什么要引入索引&#xff1f;引入索引的代价操作索引的SQL语句索引背后的数据结构B树B 树 回顾思考☁️结语 什么是索引&#xff1f; 数据库中的索引&#xff0c;就相当于一本书的目录。 什么是书的目录&#xff1f;相信大家都并不陌生&#…

【数据结构】二叉树专题

前言 本篇博客我们来看一些二叉树的经典题型&#xff0c;也是对上篇博客的补充 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 1.单值二叉树 …

算法day24

第一题 1047. 删除字符串中的所有相邻重复项 解法&#xff1a;利用数组来模拟一下栈 对于上述字符串转换为字符数组&#xff0c;通过模拟栈的操作来解决这道题&#xff0c;当栈为空时下一位字符直接进行入栈操作&#xff0c;当当前数组中要入栈的字符和栈顶的字符相同时&#x…

刷代码随想录有感(98):动态规划——爬楼梯

题干&#xff1a; 代码&#xff1a; class Solution { public:int climbStairs(int n) {if(n 1)return 1;if(n 2)return 2;vector<int>dp(n 1);dp[0] 0;dp[1] 1;dp[2] 2;for(int i 3; i < n; i){dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }; 其实就是斐波…

重生之我要精通JAVA--第八周笔记

文章目录 多线程线程的状态线程池自定义线程池最大并行数多线程小练习 网络编程BS架构优缺点CS架构优缺点三要素IP特殊IP常用的CMD命令 InetAddress类端口号协议UDP协议&#xff08;重点&#xff09;UDP三种通信方式 TCP协议&#xff08;重点&#xff09;三次握手四次挥手 反射…

素颜个人引导页源码

源码介绍 素颜个人引导页源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 效果预览 源码下载 素颜个人引导页源码

Spring boot实现基于注解的aop面向切面编程

Spring boot实现基于注解的aop面向切面编程 背景 从最开始使用Spring&#xff0c;AOP和IOC的理念就深入我心。正好&#xff0c;我需要写一个基于注解的AOP&#xff0c;被这个注解修饰的参数和属性&#xff0c;就会被拿到参数并校验参数。 一&#xff0c;引入依赖 当前sprin…

如何用群晖当异地组网服务器?

在当今信息化时代&#xff0c;远程通信成为了企业和个人之间不可或缺的一部分。特别是对于跨地区的通信需求&#xff0c;一个可靠的异地组网服务器是必不可少的。而群晖&#xff08;Synology&#xff09;作为一款功能强大的网络存储设备&#xff0c;可以被用作办公室或家庭的异…

力扣1712.将数组分成三个子数组的方案数

力扣1712.将数组分成三个子数组的方案数 确定左边界的值 然后二分求右边界的范围 右边界处的前缀和满足 2*s[i] < s[r] < (s[n] s[i]) / 2 int s[100010];const int N 1e97;class Solution {public:int waysToSplit(vector<int>& nums) {int n nums.siz…

Vue12-计算属性

一、姓名案例 1-1、插值语法实现 1、v-bind v-bind的问题&#xff1a; 所以&#xff1a;v-bind是单向绑定。 2、v-model 解决v-bind的问题。 3、输出全名 方式一&#xff1a; 方式二&#xff1a; 需求优化&#xff1a;全名中的姓氏&#xff0c;只取输入框中的前三位&#xf…