MicoZone-Maven

一、理论

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供项目构建和依赖管理支持的工具。

通过Maven管理依赖的优势:
1、通过在pom.xml中指定jar包坐标即可自动从仓库下载依赖
2、如果jar包存在子依赖会自动下载子依赖包
3、如果jar包之间存在冲突,可以通过Maven的版本仲裁机制(最短路径优先,路径相同先声明者优先)或手动添加excludes标签,排除重复的依赖

TODO依赖范围
1、compile:默认依赖范围,编译、运行时都需要,会被打入jar包
2、test:仅在测试时需要
3、runtime:运行时需要,编译时不需要,会被打入jar包,如jdbc驱动包
4、provided:编译时需要,运行时不需要,不会被打入jar包,如servlet-api

继承与聚合:
父工程打包方式要用pom,通过父工程可以定义好所有子工程的依赖。
父工程的主要标签:modules、dependencyManagement
modules可以聚合子工程,通过执行父工程的构建命令会按序执行所有聚合的子工程,避免出现子工程间存在依赖关系,而由于构建顺序导致的报错
dependencyManagement可以声明依赖版本
通过import标签实现父工程继承另一个父工程:

<dependencyManagement><dependencies><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

二、命令

mvn clean:删除target目录
mvn compile:将src/main/java目录下的Java源文件编译为.class文件输出到target目录下
mvn test:会执行src/test/java目录下的单元测试类
mvn package:jar工程打成jar包,war工程打成war包
mvn install:将package打成的jar/war包发布到本地仓库
mvn deploy:将jar包部署到远程仓库,供其他人使用

三、settings.xml

settings.xml是maven的核心配置文件

<!-- 指定本地仓库 -->
<localRepository>D:\software\maven-repository</localRepository>
<!-- Maven 下载 jar 包默认访问境外的中央仓库,速度很慢,改成阿里云提供的镜像仓库 -->
<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- 修改Java工程默认使用的JDK版本 -->
<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties>
</profile>

四、pom.xml

pom.xml是maven工程的核心配置文件

<!-- 当前Maven工程的坐标 -->
<groupId>com.micozone</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!-- Maven工程的打包方式,jar:jar包,war:war包,pom:父工程 -->
<packaging>jar</packaging>
<!-- 自定义属性,通过${}引用属性值 -->
<properties><!-- 工程构建过程中读取源码时使用的字符集 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 当前工程依赖 -->
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 配置依赖的范围 --><scope>test</scope></dependency>
</dependencies>
<build><plugins><plugin><!-- Maven自带插件,执行编译命令时使用该插件--><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><!--使用定制化插件,修改Maven默认的打jar策略:生成可执行的jar包 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.5.5</version></plugin></plugins>
</build>

五、Nexus

Nexus是Maven仓库管理软件,可以用来搭建Maven远程仓库私服。
如果本地仓库没找到,会优先从私服找,私服如果没有才会去远程仓库找。
Nexus可以创建多个仓库,仓库类型有三种:
1、proxy:代理仓库,用于代理远程仓库,如阿里仓库镜像
2、hosted:本地仓库(宿主仓库),分为发行版release和快照版snapshot,快照版指版本号带有-SNAPSHOT,从本地上传的依赖都会放到release的宿主仓库中。
3、group:仓库组,聚合代理仓库和宿主仓库,提供统一服务地址。先去宿主仓库找,如果没有找到再去代理仓库找,找到之后缓存到私服,下次就能从私服直接获取。

五.1 搭建

将 nexus-3.25.1-04-unix.tar.gz 上传至Linux服务

# 解压
tar -zxvf nexus-3.25.1-04-unix.tar.gz
# 切换到bin目录
cd /micozone/app/nexus-3.25.1-04/bin
# 执行
./nexus start
# 查看状态
./nexus status
# 登录地址:http://ip:8081   账号:admin   密码:在/micozone/app/sonatype-work/nexus3目录下

PS:
创建自定义宿主仓库时,Deployment policy 选择 Allow redeploy,这样才能上传同一个jar包的不同版本
在这里插入图片描述

五.2 使用

修改settings.xml

<servers><server><id>micozone-public</id><username>admin</username><password>jrbjrb811</password></server>
</servers>
<mirrors><mirror><id>micozone-public</id><mirrorOf>*</mirrorOf><name>micozone public</name><!--指定nexus上group类型的仓库--><!--查询依赖的顺序:本地仓库、仓库组下的仓库、仓库组下的代理仓库指定的远程仓库地址--><url>http://192.168.84.10:8081/repository/micozone-public/</url>  </mirror>
</mirrors>

如果要通过mvn deploy命令将本地项目的jar包部署到Nexus,需修改pom.xml

<distributionManagement><repository><id>micozone-public</id><!--settings.xml中配置的仓库组下的release类型的宿主仓库地址--><url>http://192.168.84.10:8081/repository/micozone-release/</url></repository><snapshotRepository><id>micozone-public</id><!--settings.xml中配置的仓库组下的snapshot类型的宿主仓库地址--><url>http://192.168.84.10:8081/repository/micozone-snapshot/</url></snapshotRepository>
</distributionManagement>

将本地jar上传至私服有两种方式,第一种是通过mvn clean deploy(前提是pom.xml中配置了distributionManagement标签),将打成的jar包上传至release类型的宿主仓库中(会同步上传至仓库组下);第二种是直接在Nexus服务器上release类型的宿主仓库下直接上传jar包。
在这里插入图片描述

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

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

相关文章

【初阶数据结构】详解插入排序 希尔排序(内含排序的概念和意义)

文章目录 前言1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用 2. 插入排序2.1 基本思想2.2 插入排序的代码实现2.3 插入排序算法总结 3. 希尔排序3.1 基本思想3.2 希尔排序的代码实现3.3 希尔排序的特征总结 前言 初级数据结构系列已经进入到了排序的部分了。相信大家听到…

TCP CUBIC 曲线对 BIC 折线的拟合

bic 旨在对 reno 改进&#xff0c;用二分逼近替换线性遍历逼近&#xff0c;时间规模从 O ( W m a x ) O(W_{max}) O(Wmax​) 下降到 O ( ln ⁡ W m a x ) O(\ln {W_{max}}) O(lnWmax​)&#xff0c;这是本质&#xff0c;而 cubic 可以看作对 bic 的 bugfix&#xff0c;解除了…

【Iceberg分析】调研Iceberg中表的原地演变

调研Iceberg中表的原地演变 文章目录 调研Iceberg中表的原地演变原生非分区表文件关系图表的原地演变之表schema演变新增字段new_column文件关系变化图为新增字段写入数据文件关系变化图删除新增字段文件关系变化图新增字段new_column2文件关系变化图删除数据文件关系变化图 原…

Spring MVC__入门

目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC 二、Spring MVC实现原理2.1核心组件2.2工作流程 三、helloworld1、开发环境2、创建maven工程3、配置web.xml4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorld7、总结 一、SpringMVC简介 1、什么是MVC MV…

强化学习-python案例

强化学习是一种机器学习方法&#xff0c;旨在通过与环境的交互来学习最优策略。它的核心概念是智能体&#xff08;agent&#xff09;在环境中采取动作&#xff0c;从而获得奖励或惩罚。智能体的目标是最大化长期奖励&#xff0c;通过试错的方式不断改进其决策策略。 在强化学习…

Linux操作系统中MongoDB

1、什么是MongoDB 1、非关系型数据库 NoSQL&#xff0c;泛指非关系型的数据库。随着互联网web2.0网站的兴起&#xff0c;传统的关系数据库在处理web2.0网站&#xff0c;特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心&#xff0c;出现了很多难以克服的问…

sysbench 命令:跨平台的基准测试工具

一、命令简介 sysbench 是一个跨平台的基准测试工具&#xff0c;用于评估系统性能&#xff0c;包括 CPU、内存、文件 I/O、数据库等性能。 ‍ 比较同类测试工具 bench.sh 在上文 bench.sh&#xff1a;Linux 服务器基准测试中介绍了 bench.sh 一键测试脚本&#xff0c;它对…

曲线图异常波形检测系统源码分享

曲线图异常波形检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

华为OD机试 - 最长元音子串的长度(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Redis入门第三步:Redis事务处理

欢迎继续跟随《Redis新手指南&#xff1a;从入门到精通》专栏的步伐&#xff01;在本文中&#xff0c;我们将探讨Redis的事务处理机制。了解如何使用事务来保证一系列操作的原子性和一致性&#xff0c;这对于构建可靠的应用程序至关重要 1 什么是Redis事务&#x1f340; ​ R…

解锁数据宝藏:AI驱动搜索工具,让非结构化数据“说话

哈哈,说起这个 AI 搜索演示啊,那可真是个有意思的话题!非结构化数据,这家伙虽然难搞,但价值却是杠杠的。今天呢,咱就好好聊聊怎么借助 Fivetran 和 Milvus,快速搭建一个 AI 驱动的搜索工具,让企业能从那些乱七八糟的数据里淘到金子! 一、非结构化数据的挑战与机遇 首…

堆【数据结构C语言版】【 详解】

目录-笔记整理 一、思考二、堆概念与性质三、堆的构建、删除、添加1. 构建2. 删除3. 添加 四、复杂度分析4.1 时间复杂度4.2 空间复杂度 五、总结 一、思考 设计一种数据结构&#xff0c;来存放整数&#xff0c;要求三个接口&#xff1a; 1&#xff09;获取序列中的最值&#…

Thinkphp/Laravel旅游景区预约系统的设计与实现

目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点&#xff1a;框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发&#xff0c;开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…

景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商

近日&#xff0c;大数据产业领域头部媒体数据猿携手上海大数据联盟联合发布了备受瞩目的《2024中国AI大模型产业图谱2.0版》。以大数据与AI为代表的智能技术为主要视角&#xff0c;聚焦全产业链&#xff0c;为业内提供更为专业直观的行业指导。 景联文科技凭借高质量数据集&…

基于大数据的学生体质健康信息系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Vue Mini基于 Vue 3 的小程序框架

新的小程序框架 https://vuemini.org/ Vue Mini 是一个基于 Vue 3 的小程序框架&#xff0c;它允许开发者利用 Vue 3 的强大功能来构建微信小程序。Vue Mini 的核心优势在于它的响应式系统和组合式 API&#xff0c;这些特性让开发者能够以一种更声明式、更高效的方式来编写和…

江科大笔记——新建工程

STM32的开发方式 目前STM32的开发方式主要有基于寄存器的方式、基于标准库的方式&#xff08;库函数的方式&#xff09;、基于HAL库的方式&#xff1a; 基于库函数的方式是使用ST官方提供的封装好的函数&#xff0c;通过调用这些函数来间接地配置寄存器。基于HAL库的方式可以…

【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;K值选择&#xff08;二&#xff09;距离度量1、欧式距离2、曼哈顿距离3、闵可夫斯基距离 &#xff08;三&#xff09;决策规则1、分类决策规则2、回归决策规则 三、算法优缺点优点缺点 四、KNN分类任务实现对比&am…

【CKA】二、节点管理-设置节点不可用

2、节点管理-设置节点不可用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 先设置节点不可用&#xff0c;然后驱逐节点上的pod 这道题就两条命令&#xff0c;直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情&#xff1a; –delete-empty…

【COSMO-SkyMed系列的4颗卫星主要用途】

COSMO-SkyMed系列的4颗卫星主要用于提供一个多用途的对地观测平台&#xff0c;服务于民间、公共机构、军事和商业领域。以下是这4颗卫星的主要用途&#xff1a; 民防与环境风险管理&#xff1a; 卫星的高分辨率雷达图像可用于监测自然灾害&#xff0c;如地震、洪水、滑坡等&am…