[JAVA]有关一些Maven的介绍

news/2024/11/8 17:23:09 标签: java, maven, 开发语言

Maven 是一个强大的项目管理和构建自动化工具,主要用于Java项目,也可以用于其他基于JVM(Java虚拟机)的语言项目,它的作用介绍如下

1.依赖管理

在Java开发中,一个项目通常会依赖许多外部的库,比如开发一个Web应用可能需要依赖Servlet APL,Spring框架等。

Maven通过在项目的pom.xml(Project Object Model,项目对象模型)文件中定义依赖项,能够自动从中央仓库(默认是Maven Central)或其他配置的远程仓库下载这些依赖库,并将它们添加到项目的类路径中。

2.项目构建

Maven定义了一个标准化的项目构建生命周期,包括清理,编译,测试,打包,安装和部署等阶段。当执行mvn clean install命令时,Maven首先会执行清理操作,删除之前构建生成的文件(如编译后的.class文件和打包后的.jar或.war文件等),然后进行编译,将.java文件编译成.class文件。

结合运行测试用例,如果测试通过,就将项目打包成指定的格式(如JAR文件用于Java库项目,WAR文件用于Web应用项目),最后将打包后的文件安装到本地仓库,供其他本地项目作为依赖使用

3.项目结构标准化

Maven强制项目遵循一定的目录结构。典型的Maven项目结构包括

  • src/main/java用于存放主要的Java源代码
  • src/main/resources用于存放项目的配置文件(如application.properties等)
  • src/test/java用于存放测试代码
  • src/test/resources用于存放测试相关的配置文件

这种标准化的结构使得开发人员能够更容易地理解和维护项目,同时也方便了各种工具(如集成开发环境)对项目进行解析和操作。

4.创建第一个Maven工程 

  • Java新建Maven工程 

 

  • src下分为了两级目录:main和test
  • main下分为两级目录: java和resources           
  • test下分为一级目录:java

 src/main/java目录

是Maven项目存放主要Java源代码的地方,所以构成项目核心功能的Java类都应该放在这个目录下。比如在一个Web应用程序中,用于处理业务逻辑的服务类(如UserService.java用于处理用户相关的业务操作,如用户注册,登录等),数据访问对象类(如UserDao.java用于与数据库交互,执行SQL查询等)都存放在这里。

src/main/resource目录

是用于存放项目的各种配置文件,资源文件,常见的配置文件如application.properties或者application.yml(在Spring Boot项目中用于配置数据库连接,服务器端口等信息),日志配置文件(如log4j.properties)。资源文件可以是一些静态文件,如图片,HTML模板等(在Web应用中可能会用到)。

src/test/java目录

是用于存放单元测试和集成测试等测试代码。对于src/main/java中的UserService.java类,可以在src/test/java中创建UserServiceTest.java类来编写测试用例,使用JUnit等测试框架来验证UserService类中的方法是否按照预期工作,如测试用户注册方法是否能正确地将用户信息保存到数据库中

src/test/resources目录

存放测试相关的资源文件和配置文件。这些文件是为了辅助测试用例的运行而设置的。例如,如果测试用例需要读取一个特定的测试数据文件(如一个包含用户测试数据的CSV文件),或者需要一个特殊的测试配置文件(如用于模拟特定环境的配置文件),就可以将这些文件放在这个目录中。

target目录

是Maven构建项目后生成的文件存放的目录,在这个目录中,会有编译后的字节码文件(如果是Java项目,src/main/java中的.java文件编译后的.class文件存放在target/classes目录下,src/test/java中的测试代码编译后的.class文件存放在target/test-classes目录下),打包后的文件(如JAR文件或WAR文件)等。

pom.xml文件(项目根目录下)这是Maven项目的核心配置文件,它定义了项目的基本信息(如项目名称,版本号,打包方式等),项目的依赖关系,构建配置。

                                      Maven项目标准结构

Maven依赖管理

  • Maven利用dependency(依赖)自动下载,管理第三方Jar
  • 在pom.xml文件中配置项目依赖的第三方组件
  • maven自动将依赖从中央仓库下载至本地仓库,并在工程中引用 
  • 在pom.xml中配置,增加dependency标签
java"><dependency>
      <groupld>com.belerweb</groupld>
      <artifactld>pinyin4j</artifactld>
      <version>2.5.5<version>
</dependency>

Groupld:机构或者团体的英文,采用“逆向域名”形式书写

Artifactld:项目名称,说明其用途,例如:cms(内容管理系统),oa(办公自动化模块)...

Version:版本号,一般采用“版本+单词”形式,例如:1.0.0.RELEASE

这三个标签被称为Maven的依赖坐标系,通过Maven坐标系提供的信息我们知道从中央仓库下载的何种厂商的组件和版本

譬如我们的项目经理希望我们开发一个将汉字转化为拼音的程序, 我们可以通过开源中国,GitHub等渠道去搜索能实现该功能的组件,但是我们现在希望利用Maven自动的进行加载,我们应该怎样查询?

打开网址 search.maven.org,搜索pinyin4j组件

在搜索页搜索pinyin4j

选择版本

复制该版本组件的依赖坐标系到pom.xml

如果文本显示红色的话 需要点击下面这个刷新符号进行下载 待文字变黑体验证是否下载成功

如何验证Maven的依赖声明jar包下载成功了呢?如果IDEA界面的左侧出现下面扩展的库则表明下载成功

 出现以上的jar包,说明远程下载后被当前工程进行依赖了,在实际项目开发时,依赖管理就是通过Maven中央仓库提供的文本放到pom.xml中,通过刷新加载后自动的进行下载,下载完以后引入当前工程我们便可以使用它。

验证是否能成功使用:

1.新建名为Pinyin的类

java">import net.sourceforge.pinyin4j.PinyinHelper;
/**
 * 汉字转拼音
 */
public class Pinyin {
    public static void main(String[] args) {
        char c = '嘿';
        //pinyin4j提供的核心类 调用它的静态方法(得到某一个字符的所有拼音)
        String[] arr = PinyinHelper.toHanyuPinyinStringArray(c);
        //增强型的for循环遍历字符串数组arr,如果arr不为空,循环会依次取出数组中的每个拼音字符串,输入到控制台中
        for (String py : arr) {
            System.out.println(py);
        }
    }
}





 

 运行结果  代码中的字符拼音被正确的显示出来

以上操作利用在网页上获取到的pinyin4j组件,将得到的依赖加入到Maven中,实现了一个简单的将汉字转化为拼音的功能。

如果我们将版本号改为2.5.0,重新加载以后,虽然中央仓库有这个版本但是它并没有自动下载,出现这种问题是因为默认的中央仓库是部署在国外

如何解决这个问题呢?我们需要增加国内阿里云提供的Maven镜像仓库,将从访问国外服务器转为

国内直接下载,访问网站maven.aliyun.com阿里巴巴国内Maven镜像仓库,通过国内的服务器提高下载速度。

定位到public公共仓库,复制仓库地址

回到IDEA编译器,将仓库地址复制到pom.xml

然后修改过的版本就能够正常进行下载

 


http://www.niftyadmin.cn/n/5744207.html

相关文章

Latex中给公式加边框

1、这里使用的不是 amsmath 的 \boxed 命令, 而是 empheq 的 empheq 环境以及 xcolor 的 \fcolorbox 命令, 下面是代码, 可以分别阅读这两个手册来获取更多的信息 \documentclass{article} \usepackage{xcolor} \usepackage{empheq} \usepackage{amsmath} \begin{document}\be…

城镇住房保障:SpringBoot系统架构解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

深入了解Git、GitHub、GitLab及其应用技巧

在现代软件开发中&#xff0c;掌握版本控制系统&#xff08;VCS&#xff09;是至关重要的&#xff0c;其中Git是最流行的分布式版本控制工具之一。本文将详细介绍Git的用途及其基本操作&#xff0c;并深入探讨GitLab、GitHub、和Git Desktop的使用方法&#xff0c;同时总结Git的…

【Linux】解锁操作系统潜能,高效线程管理的实战技巧

目录 1. 线程的概念2. 线程的理解3. 地址空间和页表4. 线程的控制4.1. POSIX线程库4.2 线程创建 — pthread_create4.3. 获取线程ID — pthread_self4.4. 线程终止4.5. 线程等待 — pthread_join4.6. 线程分离 — pthread_detach 5. 线程的特点5.1. 优点5.2. 缺点5.3. 线程异常…

SQL 数据结构查询

1&#xff1a;查询变得结构。 SELECT COLID,SO.NAME,EP.VALUE,SO.LENGTH,MIN(ST.NAME) AS TYPE FROM SYS.EXTENDED_PROPERTIES EP RIGHT JOIN SYS.SYSCOLUMNS SO ON MAJOR_IDID AND COLIDMINOR_ID LEFT JOIN SYS.SYSTYPES ST ON ST.XTYPESO…

Pinia 如何在项目中使用?

Pinia 是一个现代的、轻量级的状态管理库&#xff0c;专为 Vue 3 设计。它简化了 Vuex 的复杂性&#xff0c;提供了更直观和灵活的方式来管理应用的状态。下面详细介绍 Pinia 的基本概念、安装、配置和使用方法。 1. 先安装对应的包 npm add pinia2. 在项目中注册 /main.ts …

Spark中的宽窄依赖

一、什么是依赖关系 这里通过一张图来解释&#xff1a; result_rdd是由tuple_rdd使用reduceByKey算子得到的&#xff0c; 而tuple_rdd是由word_rdd使用map算子得到的&#xff0c;word_rdd又是由input_rdd使用flatMap算子得到的。它们之间的关系就称为依赖关系&#xff01; 二…

Dify 本地部署指南

一、前置条件 Clone Dify 代码&#xff1a; git clone https://github.com/langgenius/dify.git 在启用业务服务之前&#xff0c;我们需要先部署 PostgresSQL / Redis / Weaviate&#xff08;如果本地没有的话&#xff09;&#xff0c;可以通过以下命令启动&#xff1a; cd…