史上最详细Maven笔记以及搭建Nexus私服
1、配置环境变量
1.1、方式一
M2_HOME
1.2、方式二
1.3、 查看是否配置成功
mvn -version
2、配置maven远程仓库地址
2.1、本地maven加载顺序
查找远程地址:maven\lib\maven-model-builder-3.3.9.jar
打开pom文件:
这个地址就是远程仓库地址:
https://repo.maven.apache.org/maven2
2.2、配置国内远程仓库
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
3、pom文件
3.1、scope的值
test:作用域在测试环境
compile (默认)编译和运行都生效
provide 编译生效 打包不生效
runtime 编译不生效 打包生效
3.2、组成的基本元素:
元素 | 可选值 | 描述 |
---|---|---|
groupId | 分组ID | |
artifactId | 模块id | |
version | 版本 | |
packaging | jar、pom、war | 打包类型 |
modelVersion | 对应的超级pom 版本 | |
dependencies | 项目依懒包 |
3.3、基本命令
mvn clean // 清理target目录mvn compile // 编译mvn test // 测试mvn package // 打包mvn install // 打包并上传到本地仓库mvn depeloy // 上传到远程仓库mvn -Dmaven.test.skip=true // 跳过测试
4、聚合
4.1、介绍
常说的父工程就是聚合工程,它将多个子工程聚合起来,这样的话,直接使用maven编译打包父工程即可;
<modules><module>maltose-registry</module><module>maltose-api-gateway</module><module>maltose-item</module><module>maltose-common</module>
</modules>
其中,每一个model是子工程的artifactId值;
4.2、依赖传递
controller依赖service,service依赖dao;
如果service与dao的pom文件里都有同一个jar包—log4j.jar,但是版本不一致,那么maven是如何处理这种情况?
service的pom里,谁在前边写的,那么就是用的是谁;即:pom文件里有相同依赖,不同版本时,谁写在前,就依赖的是谁
5、linux7.13下搭建nexus3.18私服
5.1、nexus搭建
上传nexus包,并解压(nexus下载)
tar -zxvf nexus-3.18.1-01-unix.tar.gz
各个版本下载地址:
https://help.sonatype.com/repomanager3/download
https://help.sonatype.com/repomanager3/download/download-archives—repository-manager-3
解压后生成下边两个文件夹:
仓库里目前是空的,当有jar包上传上来后,就有jar包了;
配置环境变量,设置使用哪个用户启动Nexus
vi /etc/profile
#添加如下配置项,后边的值是用户名,一般不要设置root用户
export RUN_AS_USER=root
使配置文件生效:source /etc/profile
启动nexus:
进入到刚解压后的安装源文件下的bin目录,执行如下命令启动nexus
# 不显示日志的启动
./nexus start
# 如下命令也可以启动——显示日志
./nexus run &
浏览器访问(默认端口是8081)
http://192.168.11.129:8081/
登录:
点击右上角的Sign in,默认用户名admin,默认密码在sonatype-work/nexus3/admin.password里,当前最新版本nexus3.18默认密码不是admin123了,如下图
登录:
第一次登录要求改密码:
输入新密码后点击NEXT
点击finish,修改密码完成:
修改默认端口:
手动更新索引:
1、前往maven中央仓库下载indexer-cli-5.1.1.jar;
下载地址:
http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.maven.indexer%22%20AND%20a%3A%22indexer-cli%22
2、下载索引文件:
http://repo.maven.apache.org/maven2/.index/
下载如下两个文件:
nexus-maven-repository-index.gznexus-maven-repository-index.properties
5.2、仓库类型
有三大类型:proxy、group、hosted
各个仓库的介绍:
- Group:分组仓库
- Hosted:私有仓库,专门用于存储我们自己内部生成的jar文件
- 3rd party:第三方仓库
- Snapshots:本地项目的快照仓库
- Releases:本地项目发布的正式版本
- Proxy:公网发布的jar 例如:spring\mysql driver\struts等
- Central:中央仓库
- Apache Snapshots:Apache 快照仓库
5.3、本地项目配置私服,进行下载jar包
在setting.xml里添加如下配置:
<mirrors><mirror><id>nexusSnapshot</id><name>nexus</name><url>http://192.168.237.128:8081/repository/maven-public/</url><mirrorOf>*</mirrorOf> </mirror>
以及:
<profile><id>common</id><repositories><repository><id>nexusSnapshot</id><name>snapshots</name><url>http://*</url></repository><repository><id>nexusCentral</id><name>nexusCentral/</name><url>http://*</url></repository><repository><id>nexusReleases</id><name>nexusReleases</name><url>http://*</url></repository></repositories></profile>
如下图:
其中mirrorOf的值是*,表明只能从私服下载,如果私服关闭还允许从中央仓库下载,则*改为对应的站点即可,如改为nexusSnapshot;
如改为如下配置:
其中,url地址复制即可:
5.4、上传jar包到私服
1、在pom.xml里添加如下配置
<distributionManagement><repository><name>nexusSnapshot</name><id>nexusSnapshot</id><url>http://192.168.237.128:8081/repository/maven-snapshots/</url></repository>
</distributionManagement>
2、在setting.xml里配置用户名密码
<server><id>nexusSnapshot</id><username>admin123</username><password>admin123</password>
</server>
此处必须一致:
3、然后执行deploy命令即可上传
在nexus后台搜索相关jar:
5.5、maven插件的使用
5.5.1、将源码打为jar包的插件
访问:http://maven.apache.org/,点击左侧插件链接
ctrl+F搜索source插件,点击进去
里边会介绍该插件的用法:
点击上边的usage page:
项目里使用该插件,pom.xml:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.1.0</version><!--要执行的指令--><executions><execution><id>attach-sources</id><!--生命周期,即什么时候--><phase>verify</phase><!--具体执行的目标,即干什么事情--><goals><goal>jar-no-fork</goal></goals><!--需要的配置--><!-- <configuration></configuration>--></execution></executions></plugin></plugins></build>
然后执行install命令或package命令,即可打出源码包:
5.5.2、设置JRE编译版本的插件
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target></configuration>
</plugin>
5.5.3、将项目里的jar包全部打包为rar文件
1、点击maven插件
2、找到RAR插件
3、
4、将下边的插件复制到pom.xml里
注意:上边提示需要执行mvn rar:rar命令,才能最终打出rar包
5、pom.xml:
6、执行mvn rar:rar命令打包
将这个rar文件复制出来,可以看到里边的文件都是jar文件
上边的配置方式。需要执行mvn rar:rar命令才能打为rar包,插件配置成下边的形式,直接执行install命令就可打为rar包:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-rar-plugin</artifactId><version>2.4</version><configuration><includeJar>false</includeJar></configuration><executions><execution><id>buildRar</id><phase>verify</phase><goals><goal>rar</goal></goals></execution></executions>
</plugin>
5.6、maven生命周期
生命周期 lifecycle
clean lifecycle : 构建前的清理工作
• pre-clean 执行一些需要在clean之前完成的工作
• clean 移除所有上一次构建生成的文件
• post-clean 执行一些需要在clean之后立刻完成的工作
Default lifecycle: 构建的核心部分,编译、打包、部署、上传
• validate 项目及所必须的环境验证
• initialize 初始化构建状态,例如设置属性或创建目录。
• generate-sources 生成次源包
• process-sources
• generate-resources
• process-resources 复制并处理资源文件,至目标目录,准备打包。
• compile 编译项目的源代码。
• process-classes
• generate-test-sources
• process-test-sources
• generate-test-resources
• process-test-resources 复制并处理资源文件,至目标测试目录。
• test-compile 编译测试源代码。
• process-test-classes
• test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
• prepare-package
• package 接受编译好的代码,打包成可发布的格式,如 JAR 。
• pre-integration-test
• integration-test
• post-integration-test
• verify
• install 将包安装至本地仓库,以让其它项目依赖。
• deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
执行下边的命令时,上边的就会自动执行,如执行install时,compile 就会自动执行(install以上的所有命令都会执行)
site lifecycle:项目报告生成,站点文档生成
• pre-site 执行一些需要在生成站点文档之前完成的工作
• site 生成项目的站点文档
• post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
• site-deploy 将生成的站点文档部署到特定的服务器上
生命周期官网:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
六 Window下搭建Nesux
为了学习方便,我们可以在window下搭建nexus
6.1. 下载Nexus
由于Nexus需要连接外网才能下载,很不方便,所以这里已经为大家准备好了:
链接:window_nexus3.29安装包
提取码:vyrd
下载后解压放在本地任意位置,使用管理员打开powerShell
进入bin目录
cd C:\Users\maltose\Desktop\nexus-3.29.0-02-win64\nexus-3.29.0-02\bin
执行如下命令启动
.\nexus /run
页面访问:http://localhost:8081/
点击上边页面右上角的登录按钮
用户名admin,默认密码所在位置(nexus3.x版本的默认密码不是admin123)
登录成功
史上最详细Maven笔记以及搭建Nexus私服相关推荐
- GitChat·大数据 | 史上最详细的Hadoop环境搭建
GitChat 作者:鸣宇淳 原文: 史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 [不要错过文末彩蛋] 前言 Hadoop在大数据技术体系中的地位至关重要 ...
- 转 史上最详细的Hadoop环境搭建
转载的文章,请告知侵删.本人只是做个记录,一面以后找不到. 前言 Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的扎实程度,会决定在大数据技 ...
- 史上最详细阿里云服务器搭建及域名申请攻略
摘要:本文是用阿里云虚拟主机搭建服务器和测试的攻略,如果你想要的服务器是用来做:个人网站.微信开发.接口开发.小型数据库.毕业设计,那么你应该是找对了. 本文包含:阿里云虚拟主机搭建.万网域名申请和解 ...
- 史上最详细JVM笔记
文章目录 简介 指令架构 寄存器指令架构 栈指令架构 生命周期 虚拟机启动 运行 退出 概览图 类加载 类加载子系统 加载 链接 验证 准备 解析 初始化 类加载器分类 引导类加载器 扩展类加载器 应 ...
- 史上最详细 Lipreading using Temporal Convolutional Networks 环境配置
唇语识别是目前人工智能领域比较热门的应用之一,本文将在之后的内容中介绍2020年英文词汇级唇语识别在LRW(Lir Reading in the Wild)数据集以及LRW-1000两个数据集上实现S ...
- 史上最详细“截图”搭建Hexo博客——For Windows
http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...
- 史上最详细Docker安装最新版Minio 带详解 绝对值得收藏!!! 让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路!解决启动了但是浏览器访问不了的原因
让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路! WARNING: Console endpoint is listening on a dynamic port (34451) ...
- ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!
文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...
- 史上最详细sql注入wp
文章目录 sql注入wp(史上最详细) 前言 什么是SQL注入? SQL注入的原理 常见的注入方式 常见绕过技巧 常见防控SQL注入的方法 手工查询语句 Basic Challenges Less-1 ...
最新文章
- Christopher Manning​:Uber 出售自动驾驶部门是一个标志性事件​ | AI日报
- Linux服务器集群系统(四)--转
- Dlib模型人脸特征检测原理及demo
- 【PAT乙级】1040 有几个PAT (25 分)
- 萤火虫算法_智能优化算法萤火虫算法
- 数据大屏产品介绍PPT_有这些图表美化工具,十分钟配出炫酷的数据可视化大屏...
- c++: internal compiler error: Killed
- 变成字符串_字符串哈希:从零开始的十分钟包会教程
- 汽车电子_EMC测试_RE试验整改
- A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
- 开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o
- IDEA 强大文件对比功能
- cJSON字符串解析
- matlab错位相减,matlab随手记
- Unity - 搬砖日志 - 获取 LODGroup 当前显示的 LOD 级别
- 跟海外大牌正面PK,中国品牌如何出圈?
- 结对编程的合作情况,以及结对编程的优缺点
- 项目经理年终总结|一个高层项目管理者的年终反思
- 怎样绘制精美的思维导图
- 微信小程序评分组件rater(打分,五颗星,不支持半颗行)
热门文章
- spicy(三)compiling analyzers
- 戴眼镜总是不舒服,你的眼镜真的适合你吗?
- 全球顶尖大学已将加密货币加入其课程
- python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储
- win10系统打不开计算机管理,win10电脑任务栏图标一直闪烁,任务管理器打不开...
- 技术总监/技术leader职责与工作记录第一天
- python里raise是什么意思_python raise有什么用
- google地图测距原码
- 十大智能家居系统解决方案
- Kafka 关于消费者组名Consumer Group