Java二阶知识点总结(一)Maven

一、Maven概念

Maven是一个项目管理工具,其主要作用有2点

  • 依赖管理:管理项目依赖的各种jar包
  • 自动构建:项目构建的过程,从编译、测试、运行、打包到安装的过程可以一键执行

二、Maven工程的目录结构

  • src/main/java:存放项目的.java文件
  • src/main/resources:存放项目资源文件,如spring配置文件
  • src/test/java:存放所有单元测试.java文件,如JUnit测试类
  • src/test/resources:测试资源文件
  • target:项目输出位置,编译后的class文件会输出到此目录
  • pom.xml:maven项目核心配置文件
  • 注意:以上目录约定大于配置,最好不要修改位置和名称

三、Maven仓库的分类

  • 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。
  • 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
  • 中央仓库 :在maven软件中内置了一个远程仓库地址http://repo1.maven.org/maven2,它是中央仓库,服务于整个互联网,由Maven团队自己维护,里面存储了非常全的jar包,包含了世界上大部分流行的开源项目构件

四、Maven的常用命令

  • compile:编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下
  • test:测试命令,作用是执行src/test/java下的单元测试类
  • clean:清理命令,执行 clean会删除target目录及内容
  • package:打包命令,对于java工程执行package打成jar包,对于web工程打成war包
  • install:安装命令,执行install将maven打成jar包或war包发布到本地仓库
  • 注意:理论上后面的命令执行时,前面的命令也会依次执行直到当前命令;但有时候Maven会因为某些情况认为jar包是最新的而不执行clean操作,进而导致jar包未更新,因此,保险起见,在每次打包前最好先执行clean命令,然后再执行package命令

五、项目对象模型(Project Object Model)

  • 对标pom.xml文件
  • 基本配置
<project>:文件的根节点
<parent>:指定继承的父模
<modelversion>:pom.xml使用的对象模型版本
<groupId>:项目名称,一般写项目的域名
<artifactId>:模块名称,子项目名或模块名称
<version>:产品的版本号 .
<packaging>:打包类型,一般有jar、war、pom 等
<name>:项目的显示名,常用于 Maven 生成的文档。
<description>:项目描述,常用于 Maven 生成的文档
<properties>:设置一些属性,通常指定jar包的版本、设置编译版本
<dependencies>:项目依赖构件配置,配置项目依赖构件的坐标
<build>:项目构建配置,配置编译、运行插件等。
  • 依赖坐标
<dependency>
    <!--项目名称,定义为组织名+项目名,类似包名-->
    <groupId>com.ljj</groupId>
    <!-- 模块名称 -->
    <artifactId>hello_maven</artifactId>
    <!-- 当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 依赖范围 -->
    <scope></scope>
</dependency>
<!-- 打包类型,有jar和war两种 -->
<packaging >war</packaging >
  • 常用属性
${project.groupId}:项目的groupId.
${project.artifactId}:项目的artifactId.
${project.version}:项目的version,于${version}等价 
${project.basedir}:表示项目根目录,即包含pom.xml文件的目录;  
${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java/.
${project.build.testSourceDirectory}:项目的测试源码目录,默认为/src/test/java/.
${project.build.directory}:项目构建输出目录,默认为target/.
${project.outputDirectory}:项目主代码编译输出目录,默认为target/classes/.
${project.testOutputDirectory}:项目测试代码编译输出目录,默认为target/testclasses/.
${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}

常见应用

1、引入外部jar包

  • 把jar放到项目中,如下,新建文件夹lib,并将外部jar包放入。该目录路径可以改,但注意pom.xml文件中的路径配置要对应上
    在这里插入图片描述
  • 配置依赖,如下,每个jar包都要单独引入
		<dependency>
			<groupId>org.geotools</groupId>
			<artifactId>gt-shapefile</artifactId>
			<version>19.2</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/gt-shapefile-19.2.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>org.ejml</groupId>
			<artifactId>ejml-core</artifactId>
			<version>0.39</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/ejml-core-0.39.jar</systemPath>
		</dependency>
  • 配置打包
<configuration>
	<!-- 引用本地jar包配置-->
	<includeSystemScope>true</includeSystemScope>
</configuration>

在这里插入图片描述
2、多模块开发,引用其他模块,且附带目标模块的依赖

  • 配置打包,和上图位置一样
<configuration>
    <classifier>exec</classifier>
</configuration>
  • 打包后可能会生成两个jar包,带exec的是可执行jar包,不带的用于给其他模块依赖

3、把第三方jar包放入本地仓库

  • 找到第三方jar包所在目录,在地址栏输入cmd进入命令窗口
  • 输入如下命令:注意groupid、artifactid、version的值按照第三方jar包的实际配置修改
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile= fastjson-1.1.37.jar -D

参考

  • Maven知识点总结
  • 关于Maven,这几个一定要会的知识点,你真的了解吗?

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

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

相关文章

H5ke13-1浏览器处理异常

window对应的error没有event对象 window对应的error他接收三个参数,msg,url,行号 return false return true 1就不会返回错误 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title>&…

使用 MITRE ATTCK® 框架缓解网络安全威胁

什么是MITRE ATT&CK框架 MITRE Adversarial Tactics&#xff0c; Techniques&#xff0c; and Common Knowledge&#xff08;ATT&CK&#xff09;是一个威胁建模框架&#xff0c;用于对攻击者用来入侵企业、云和工业控制系统&#xff08;ICS&#xff09;并发起网络攻击…

探索人工智能领域——每日20个名词详解【day10】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

正则表达式(5):常用符号

正则表达式&#xff08;5&#xff09;&#xff1a;常用符号 小结 本博文转载自 在本博客中&#xff0c;”正则表达式”为一系列文章&#xff0c;如果你想要从头学习怎样在Linux中使用正则&#xff0c;可以参考此系列文章&#xff0c;直达链接如下&#xff1a; 在Linux中使用正…

Leetcode刷题详解——最长湍流子数组

1. 题目链接&#xff1a;978. 最长湍流子数组 2. 题目描述&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子…

简单易懂:Axios 如何取消请求的两种方法

在前端开发中&#xff0c;网络请求是非常常见的操作。而有时候&#xff0c;我们可能需要在发送请求后取消它&#xff0c;比如用户在请求还未完成时离开了当前页面或者执行了其他操作&#xff0c;本文将介绍如何在使用 Axios 发送请求时取消这些请求。 基本概念 在 Axios 中&am…

WindowsServer服务器系列:定时备份 MySQL

一、编写脚本 echo 取日期、时间变量值 set yy%date:~0,4% set mm%date:~5,2% set dd%date:~8,2% if /i %time:~0,2% lss 10 set hh0%time:~1,1% if /i %time:~0,2% geq 10 set hh%time:~0,2% set mn%time:~3,2% set ss%time:~6,2% set date%yy%%mm%%dd% set time%hh%%mn%%ss…

DAPP开发【10】express.js的使用

Express.js 是一种流行、轻量级的开源 Web 应用程序框架&#xff0c;用于开发基于 Node.js 的服务器端 Web 应用程序。它提供了强大的功能集&#xff0c;适用于 Web 和移动应用程序。Express.js 旨在支持单页、多页和混合式 Web 应用程序的开发。Express.js 提供了广泛的功能&a…

2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 A题 翼龙如何飞行 原题再现&#xff1a; 翼龙是翼龙目中一个已灭绝的飞行爬行动物分支。它们存在于中生代的大部分时期&#xff1a;从三叠纪晚期到白垩纪末期。翼龙是已知最早进化出动力飞行的脊椎动物。它们的翅膀是由皮肤、肌肉和其他组…

python学习之JSON数据处理在Python中的应用:从解析到生成

JSON文件是一种轻量级的数据交换格式&#xff0c;它采用了一种类似于JavaScript语法的结构&#xff0c;可以方便地在不同平台和编程语言之间进行数据交换。在Python中&#xff0c;我们可以使用内置的json模块来读取和写入JSON文件。 下面是一个简单的示例&#xff0c;展示了如…

【基于openGauss5.0.0简单使用DBMind】

基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机&#xff1a;virtualbox操作系统&#xff1a;openEuler 20.03 TLS数据库&#xff1a;openGauss-5.0.0DBMind&#xff1a;d…

短剧分销小程序/APP开发:开启短剧收益时代

今年&#xff0c;短剧火爆出圈&#xff0c;市场规模将达至200亿元至300亿元。国内全全平台付费短剧日充值金额为6000万元&#xff0c;短剧作为一种“快餐式”文化迅速爆火。 短剧契合了观众娱乐时间碎片化的发展趋势&#xff0c;相比于传统的电视剧&#xff0c;短剧节奏快、剧…

【链表Linked List】力扣-114 二叉树展开为链表

目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序&#xff1a; 1、onMeasure&#xff08;测量&#xff09;&#xff0c;先根据构造器传进来的LayoutParams&#xff08;布局参数&#xff09;&#xff0c;测量view宽高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机图像保存到电脑内存的技术背景代码分析注册SDK回调函数BufferEvent声明可以存储相机图像的内存序列和名称在图像回调函数中将图像保存在内存序…

C#核心笔记——(三)在C#中创建类型

3.1 类 类是最常见的一种引用类型&#xff0c;最简单的类的声明如下&#xff1a; class MyClass{}而复杂的类可能包含如下内容&#xff1a; 1.在class关键字之前&#xff1a;类的特性&#xff08;Attribute&#xff09;和修饰符。非嵌套的类修饰符有&#xff1a; public、int…

【计算机网络笔记】物理层——基带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

kyuubi整合flink yarn session mode

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 配置 ky…

互联网Java工程师面试题·Spring Cloud篇

目录 1、什么是 Spring Cloud&#xff1f; 2、使用 Spring Cloud 有什么优势&#xff1f; 3、服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现&#xff1f; 4、负载平衡的意义什么&#xff1f; 5、什么是 Hystrix&#xff1f;它如何实现容错&#xff1f; 6、什么是…

SpringBoot读取properties文字乱码问题及相关问题

问题&#xff1a;在idea的编辑器中properties文件一般用UTF-8编码&#xff0c;SpringBoot2读取解码方式默认不是UTF-8&#xff0c;当值出现中文时SpringBoot读取时出现了乱码。 解决方式1&#xff1a;在SpringBoot框架层面解决&#xff0c;在配置类注解上添加encoding属性值为…