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私服相关推荐

  1. GitChat·大数据 | 史上最详细的Hadoop环境搭建

    GitChat 作者:鸣宇淳 原文: 史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 [不要错过文末彩蛋] 前言 Hadoop在大数据技术体系中的地位至关重要 ...

  2. 转 史上最详细的Hadoop环境搭建

    转载的文章,请告知侵删.本人只是做个记录,一面以后找不到. 前言 Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的扎实程度,会决定在大数据技 ...

  3. 史上最详细阿里云服务器搭建及域名申请攻略

    摘要:本文是用阿里云虚拟主机搭建服务器和测试的攻略,如果你想要的服务器是用来做:个人网站.微信开发.接口开发.小型数据库.毕业设计,那么你应该是找对了. 本文包含:阿里云虚拟主机搭建.万网域名申请和解 ...

  4. 史上最详细JVM笔记

    文章目录 简介 指令架构 寄存器指令架构 栈指令架构 生命周期 虚拟机启动 运行 退出 概览图 类加载 类加载子系统 加载 链接 验证 准备 解析 初始化 类加载器分类 引导类加载器 扩展类加载器 应 ...

  5. 史上最详细 Lipreading using Temporal Convolutional Networks 环境配置

    唇语识别是目前人工智能领域比较热门的应用之一,本文将在之后的内容中介绍2020年英文词汇级唇语识别在LRW(Lir Reading in the Wild)数据集以及LRW-1000两个数据集上实现S ...

  6. 史上最详细“截图”搭建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 ...

  7. 史上最详细Docker安装最新版Minio 带详解 绝对值得收藏!!! 让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路!解决启动了但是浏览器访问不了的原因

    让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路! WARNING: Console endpoint is listening on a dynamic port (34451) ...

  8. 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 ...

  9. 史上最详细sql注入wp

    文章目录 sql注入wp(史上最详细) 前言 什么是SQL注入? SQL注入的原理 常见的注入方式 常见绕过技巧 常见防控SQL注入的方法 手工查询语句 Basic Challenges Less-1 ...

最新文章

  1. Christopher Manning​:Uber 出售自动驾驶部门是一个标志性事件​ | AI日报
  2. Linux服务器集群系统(四)--转
  3. Dlib模型人脸特征检测原理及demo
  4. 【PAT乙级】1040 有几个PAT (25 分)
  5. 萤火虫算法_智能优化算法萤火虫算法
  6. 数据大屏产品介绍PPT_有这些图表美化工具,十分钟配出炫酷的数据可视化大屏...
  7. c++: internal compiler error: Killed
  8. 变成字符串_字符串哈希:从零开始的十分钟包会教程
  9. 汽车电子_EMC测试_RE试验整改
  10. A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
  11. 开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o
  12. IDEA 强大文件对比功能
  13. cJSON字符串解析
  14. matlab错位相减,matlab随手记
  15. Unity - 搬砖日志 - 获取 LODGroup 当前显示的 LOD 级别
  16. 跟海外大牌正面PK,中国品牌如何出圈?
  17. 结对编程的合作情况,以及结对编程的优缺点
  18. 项目经理年终总结|一个高层项目管理者的年终反思
  19. 怎样绘制精美的思维导图
  20. 微信小程序评分组件rater(打分,五颗星,不支持半颗行)

热门文章

  1. spicy(三)compiling analyzers
  2. 戴眼镜总是不舒服,你的眼镜真的适合你吗?
  3. 全球顶尖大学已将加密货币加入其课程
  4. python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储
  5. win10系统打不开计算机管理,win10电脑任务栏图标一直闪烁,任务管理器打不开...
  6. 技术总监/技术leader职责与工作记录第一天
  7. python里raise是什么意思_python raise有什么用
  8. google地图测距原码
  9. 十大智能家居系统解决方案
  10. Kafka 关于消费者组名Consumer Group