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,这几个一定要会的知识点,你真的了解吗?

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

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

相关文章

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 14 章:受控生成提示

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 14 章&#xff1a;受控生成提示 受控生成提示是一种可以高度控制输出结果的文本生成技术。 具体做法是为模型提供一组特定的输入&#xff0c;如模板、特定词汇或一组约束&#xff0c;用于指导生成过程。 …

C++代码自动化

摘要 在程序员的日常工作中&#xff0c;写代码并不是一件很枯燥乏味的事&#xff0c;因为本身通过代码已经实现了很多单靠人无法完成的工作。但随着代码工程量的加剧&#xff0c;代码逐渐的冗长而复杂&#xff0c;功能的调理型也逐渐的不清晰&#xff0c;这种现象一方面使得代…

Linux join命令教程:如何合并两个文件的行(附实例详解和注意事项)

Linux join命令介绍 Linux的join命令是一个非常有用的工具&#xff0c;它可以合并两个文件的行&#xff0c;这两个文件的行是通过一个公共字段来匹配的。这个命令可以为你的静态数据文件添加一些动态性。如果你想从两个文本文件中通过匹配一个公共字段来合并数据&#xff0c;你…

前端面试JS—数组的常用方法

目录 一、操作&#xff08;增/删/改/查&#xff09; 增 删 改 查 二、排序 三、转换 四、迭代 一、操作&#xff08;增/删/改/查&#xff09; 数组基本操作有 增、删、改、查&#xff0c;需要注意哪些方法会对原数组产生影响&#xff0c;哪些方法不会 增 下面前三种是对…

【S32K144】MCAL基础工程搭建

目录 一、在S32DS创建Application Project 二、MCAL工程 三、基于MCAL的集成 以下示例基于S32K144EVB开发板进行。 一、在S32DS创建Application Project &#xff08;1&#xff09;新建工程Application Project &#xff08;2&#xff09;工程配置 &#xff08;3&#xff…

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

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

PHP处理字符串

一&#xff1a;字符串分割成数组 日常工作中&#xff0c;如果需要把一个字符串分割成数组&#xff0c;我们一般使用 explode() 函数对字符串进行分割&#xff0c;具体代码如下所示&#xff1a; <?php$str PHP|python|java|js|css|html; $arr explode(|,$str); print_r(…

linux的磁盘管理

Linux 提供了多种工具和技术来进行磁盘管理。下面是对 Linux 磁盘管理的详细解释&#xff1a; 磁盘和分区&#xff1a; 磁盘&#xff08;硬盘&#xff09;&#xff1a;Linux 系统中的磁盘通常是通过 SATA、SCSI、NVMe 等接口连接的物理硬盘。可以使用工具如 lsblk、fdisk、pa…

二叉平衡树

一直想深入的研究一下&#xff0c;并手写平衡二叉树的插入、删除代码。 二叉树是动态查找的典范&#xff0c;但在极限情况下&#xff0c;二叉树的查找效果等同于链表&#xff0c;而平衡二叉树可以完美的达到 log ⁡ 2 n \log_2 n log2​n。 AVL简称平衡二叉树&#xff0c;缩写…

DAPP开发【11】IPFS星际文件管理系统

IPFS&#xff08;InterPlanetary File System&#xff09;是一个点对点的分布式文件系统&#xff0c;旨在创建一个更快速、更安全和更开放的 Web。它不同于传统的 HTTP 协议&#xff0c;因为它不需要使用一个固定的地址来访问文件&#xff0c;而是通过一个基于内容寻址的系统&a…

HNU程序设计 类和对象练习(小班)

学生类Student类的设计与实现 要求: 创建一个 Student 类&#xff0c;包含公有数据成员&#xff1a;姓名&#xff08;字符串&#xff09;、学号、性别、 3 门课程成绩 ( 结构 体形式&#xff0c;属性包含课程名和分数 ) &#xff0c;以及私有属性身份证信息。 &#xff08;…

python 实现 excle读取时间序列数据并画图显示

示例&#xff1a;Excle第一列为时间&#xff0c;第二列Num为秒为单位的时间&#xff0c;第三列到第九列为观测的温度数据。第一行为标签信息&#xff0c;第二行开始是数据。 实现功能&#xff1a;以第二列秒为单位的数据为横坐标&#xff0c;纵坐标为温度&#xff0c;将第三列到…

Linux系统调试课:I2C tools调试工具

文章目录 一、如何使用I2C tools测试I2C外设1、I2C tools概述: 2、下载I2C tools源码:3、编译I2C tools源码: 4、i2cdetect 5、i2cget 6、i2cdump

Vue+ElementUI技巧分享:结合Sortablejs实现表格行拖拽

文章目录 前言准备工作示例代码代码说明1. 引入依赖和组件结构2. 组件数据和生命周期3. 实现拖拽功能4. 更新数据和服务器同步 运行效果总结 前言 在很多动态网页应用中&#xff0c;用户界面的交互性是提高用户体验的关键。在 Vue.js 中&#xff0c;结合 Element UI 和 sortab…

rust从0开始写项目-06-如何接受命令行参数clap-01

写web项目或者app等&#xff0c;必不可少的要接受参数和校验参数的准确性&#xff0c;基本也是项目开始的第一步&#xff0c;那么我们今天来看下rust提供了哪些优秀的crates 关注 vx golang技术实验室&#xff0c;获取更多golang、rust好文 Part1一、clap_v3 本来是想用structO…

【Flink on k8s】- 3 - Kubernetes 中的关键概念

目录 1、容器 VS 虚拟机 2、Kubernetes 架构 2.1 Master节点 2.2 Node 节点 3、Kubernetes 的基本对象

华为OD机试 - 分披萨(Java JS Python C)

题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…

初识树型结构与二叉树

1. 树型结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff08;它是根朝上&#xff0c;而叶朝下的&#xff09;&#xff0c;其物理结构如下图所示&#x…

Ubuntu 20.04 安装 mysql8 LTS

Ubuntu 20.04 安装 mysql8 LTS sudo apt-get update sudo apt-get install mysql-server mysql --version mysql Ver 8.0.35-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) Ubuntu20.04 是自带了 MySQL8. 几版本的&#xff0c;低于 20.04 则默认安装是 MySQL5.7.33 s…

rpm安装gitlab

1.rpm包下载 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 2.进行安装 rpm -ivh gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm --nodeps --force 3.配置访问地址 vim /etc/gitlab/gitlab.rb 4.重新加载配置以及重启服务 gitlab-ctl reconfiguregitlab-ctl resta…