知识点收录04:MAVEN相关的知识点

  • Maven的六类属性
    • 内置属性
    • POM 属性
    • 自定义属性
    • Settings 属性
    • Java 系统属性
    • 环境变量属性
  • Maven的生命周期
  • Maven设置UTF-8
  • 本地仓库安装依赖
    • 命令行形式安装
    • 借助IDEA进行安装
  • Maven项目使用私有仓库依赖的配置详解
  • Maven发布私有依赖到私库
    • 纯命令行形式(单个)
    • pom文件配置形式(单个)
      • pom文件配置
      • maven的setting.xml的配置
      • 在项目目录下或借助编辑器执行Mvn deploy
    • Nexus界面形式(单个)
    • 快速拉齐本地和远程私库依赖(批量)
  • maven的scm插件介绍
    • 常用命令
    • 配置及使用
    • SCM支持的连接类型

Maven的六类属性

内置属性

在 Maven 中主要有两个常用的内置属性,它们分别是${basedir}和${version}属性。
${basedir}表示项目的根目录,也就是包含 pom.xml 文件的目录;
${version}表示项目的版本。

POM 属性

用户可以通过 POM 属性,引用 POM 文件中对应元素的值,比如${project.artifactId}就对应 project→artifactId 元素的值。常用的 POM 属性包括以下方面。

  • ${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.groupId}:项目的 groupId。
  • ${project.artifactId}:项目的 artifactId。
  • ${project.version}:项目的版本。
  • ${project.build.finalName}:项目输出的文件名称,默认为“${project.artifactId}-${project.version}”

自定义属性

用户可以在 pom 的 properties 中定义自己的 Maven 属性,然后在后面重复使用,同在前面提到的 SpringPOM 的 pom.xml 中定义的 Spring 的版本信息一样。

Settings 属性

Settings 属性同 POM 属性是一样的,可以用以“settings.”开头的属性引用 settings.xml 文件中 XML 元素的值。如使用“${settings.localRepository}”指向用户本地仓库的地址。

Java 系统属性

所有的 Java 系统属性都可以通过 Maven 属性引用,比如“${user.home}”指向的就是用户目录。用户可以通过使用“mvn help:system”命令查看所有的 Java 系统属性

环境变量属性

所有的环境变量都可以用以“evn.”开头的 Maven 属性引用。比如,“${evn.JAVA_HOME}”就指向引用了 JAVA_HOME 环境变量的值。同查看 Java 系统属性一样,用户可以使用命令“mvn help:system”查看到所有的环境变量。

Maven的生命周期

Maven 拥有三套独立的生命周期,它们分别是 clean、default 和 site。clean 生命周期的目的是清理项目;default 生命周期的目的是构建项目;site 生命周期的目的是建立项目站点。

每个生命周期又包含了多个阶段。这些阶段在执行的时候是有固定顺序的。后面的阶段一定要等前面的阶段执行完成后才能被执行。

Maven设置UTF-8

pom文件中新增

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

本地仓库安装依赖

命令行形式安装

mvn install:install-file -Dfile=<Jar包的地址> -DgroupId=<Jar包的GroupId> -DartifactId=<Jar包的引用名称> -Dversion=<Jar包的版本> -Dpackaging=<Jar的打包方式>

借助IDEA进行安装

  1. 打开侧面的maven,点击图中箭头指向的图标

  2. 出现如下弹窗,在Command line 中输入执行的命令

    指令格式

    mvn install:install-file -Dfile=<Jar包的地址> -DgroupId=<Jar包的GroupId> -DartifactId=<Jar包的引用名称> -Dversion=<Jar包的版本> -Dpackaging=<Jar的打包方式>
    

Maven项目使用私有仓库依赖的配置详解

我找遍了所有百度的文章最后得出结论,目前CSDN和博客园目前所有的关于Maven引用私库的文章全部有误,更蛋疼的是全部都是复制粘贴的,看得人都吐了
错误点就是:单单在项目POM中配置respositories节点,示例如下:

 <repositories><repository><id>cz</id><name>cz</name><url>http://10.14.63.72:8081/nexus/content/groups/CZ_Public/</url><releases><enabled>true</enabled></releases><!-- 是否下载该仓库的snapshots类型包,true下载,false不下载 --><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 配置从哪个仓库中下载构件,即jar包 --><pluginRepositories><pluginRepository><id>cz</id><name>cz</name><url>http://10.14.63.72:8081/nexus/content/groups/CZ_Public/</url><releases><enabled>true</enabled></releases><!-- 是否下载该仓库的snapshots类型包,true下载,false不下载 --><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>

单单在项目中配置respositories节点是不起作用的!!!
解决方式是:同时在maven的setting文件中加入私库的配置,如下所述:注意一点,id保持一样

<mirror><id>cz</id><name>Maven Repository Switchboard</name><url>http://10.14.63.72:8081/nexus/content/groups/CZ_Public/</url><mirrorOf>tianyan</mirrorOf>
</mirror>

Maven发布私有依赖到私库

纯命令行形式(单个)

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=D:\work\scan\com.kevin.skeleton\target\skeleton-1.0.jar -DgroupId=hessian -DartifactId=skeleton -Dversion=1.0 -Dpackaging=jar -DrepositoryId=releases -Durl=http://192.168.0.202:8080/nexus/content/repositories/releases

-Dmaven.test.skip=true //跳过编译、测试
-Dfile=D:\MvnProject\service-mvn-1.0.0.jar //jar包文件地址,绝对路径
-DgroupId=pri.roy.mvn.test //gruopId–pom坐标,自定义
-DartifactId=mvn-api //artifactId–pom坐标,自定义
-Dversion //版本号
-Dpackaging //打包方式
-DrepositoryId //远程库服务器ID
-Durl //远程库服务器地址

pom文件配置形式(单个)

pom文件配置

1.新增distributionManagement

```
<distributionManagement><repository><id>cz</id><name>cz</name><url>http://10.14.63.72:8081/nexus/content/groups/CZ_Public/</url></repository><snapshotRepository><id>cz</id><name>cz</name><url>http://10.14.63.72:8081/nexus/content/groups/CZ_Public/</url></snapshotRepository>
</distributionManagement>
```

2.Build配置如下

```<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.9.1</version><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build>
```

maven的setting.xml的配置

可以新增一个publish-cz-setting.xml然后里面新增修改
1.mirrors下新增一个mirror,如下

```
<mirror><id>cz</id><name>Maven Repository Switchboard</name><url>http://10.124.163.72:8081/nexus/content/repositories/3rd-party/</url>
<mirrorOf>cz</mirrorOf>
```

2.servers下新增一个server,如下

```<server><id>cz</id><username>cz</username><password>cz123</password></server>
```

在项目目录下或借助编辑器执行Mvn deploy

Nexus界面形式(单个)

快速拉齐本地和远程私库依赖(批量)

1.先将本地maven/repository仓库打一个完整的zip压缩包

2.上传到linux目录,如:/opt

3.解压repository.zip

4.进入repository目录

5.创建vi mavenimport.sh脚本,写入以下内容;

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line paramswhile getopts ":r:u:p:" opt; docase $opt inr) REPO_URL="$OPTARG";;u) USERNAME="$OPTARG";;p) PASSWORD="$OPTARG";;esac
donefind . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

6.输入chmod a+x mavenimport.sh进行可执行授权

7.执行导入命令

./mavenimport.sh -u admin -p admin123 -r http://ip:8081/repository/maven-releases/

8.等待全部导入完毕后,在Nexus上刷新即可看到已导入的jar

maven的scm插件介绍

SCM:Software Configuration Management,可以支持我们常用SVN、CVS等。其它的SCM都有自己独特的命令来操作提交变更、或从服务器上获取最新的源吗,如SVN及CVS的操作就很不相同,使用Maven担任的SCM机制,就可以使得SCM的操作变得统一。

常用命令

scm:branch - branch the project(创建项目的分支)
scm:validate - validate the scm information in the pom(校验SCM的配置信息)
scm:add - command to add file(增加一个文件)
scm:unedit - command to stop editing the working copy(停止编辑当前COPY)
scm:export - command to get a fresh exported copy(拉一个全新的分支)
scm:bootstrap - command to checkout and build a project(checkout并编译工程)
scm:changelog - command to show the source code revisions(显示源码版本)
scm:list - command for get the list of project files(列出工程的文件)
scm:checkin - command for commiting changes(提交变更)
scm:checkout - command for getting the source code(获取源码)
scm:status - command for showing the scm status of the working copy(获取本地项目的状态)
scm:update - command for updating the working copy with the latest changes(从服务器获取最新的版本)
scm:diff - command for showing the difference of the working copy with the remote one(比较本地与远程服务器的差异)
scm:update-subprojects - command for updating all projects in a multi project build(更新子项目)
scm:edit - command for starting edit on the working copy(编辑)
scm:tag - command for tagging a certain revision(打标签)

配置及使用

<project>...<groupId>io.github.whyareyousoseriously</groupId><artifactId>cz-common-utils</artifactId><version>0.1.8.RELEASE</version><name>cz-common-utils</name><scm><url>https://github.com/whyareyousoseriously/cz-common-utils</url><connection>https://github.com/whyareyousoseriously/cz-common-utils.git</connection><developerConnection>https://github.com/whyareyousoseriously</developerConnection></scm>...
</project>

提交:

mvn -Dmessage="<commit_log_here>" scm:checkin

获取最新版本:

mvn scm:update

SCM支持的连接类型

SCM支持两种连接类型:connection 及 developerConnection。
以下是一个连接类型为connection的配置示例:

<project>...<build>[...]<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-scm-plugin</artifactId><version>1.8.1</version><configuration><connectionType>connection</connectionType></configuration></plugin>...</plugins...</build>...
</project>

以下是一个连接类型为developerConnection的配置示例:

<project>...<build>...<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-scm-plugin</artifactId><version>1.8.1</version><configuration><connectionType>developerConnection</connectionType></configuration></plugin>...</plugins...</build>...
</project>

知识点收录04:MAVEN相关的知识点相关推荐

  1. TPC/IP协议中与IP相关的知识点简介

    TPC/IP协议中与IP相关的知识点简介 简介 TCP/IP参考模型作为实现网络连接性和互操作性的关键,它使得网络上不同的计算机具有互操作能力,并且在较差的网络环境下可维持主机之间的连接 其协议结构分 ...

  2. 金融风控相关的知识点

    金融风控相关的知识点 对于金融风控预测类常见的评估指标如下 KS(Kolmogorov-Smirnov) KS统计量由两位苏联数学家A.N. Kolmogorov和N.V. Smirnov提出.在风控 ...

  3. Maven构建项目 — 知识点梳理

    文章目录 项目构建的痛点 有痛点就会有需求,apache根据这些痛点开发了Maven项目管理工具.Maven有以下核心特性 Maven安装和配置 修改Maven本地仓库 idea集成maven Mav ...

  4. 计算机408知识点大全,2022计算机408考研知识点:输入输出系统

    2022计算机408考研知识点:输入输出系统 如果你准备考计算机专业研究生,小编敬佩你的勇气,作为专业难度很高的计算机专业来说,一定要全力备考.本文新东方在线计算机考研小编整理分享"2022 ...

  5. 初中数学503个必考知识点_初中生物必考知识点总结_生物必考知识点指南

    初中生物看似简单,却为以后的生物学习奠定了基础知识,初中生物必考知识点有哪些?以下是小编收集整理的一些关于初中生物必考知识点总结_生物必考知识点指南,作为参考,希望你喜欢. 基因 概念:DNA分子很长 ...

  6. 5.Maven和Eclipse整合(两种方式进行插件的安装),Maven相关设置,Eclipse下创建Maven项目

     1  第一种方式是:在连网的情况下,通过在helpàInstall下安装. 新的地址是:http://download.eclipse.org/technology/m2e/releases 2 ...

  7. 计算机知识点汇总职高,计算机辅导(知识点汇总) - 慈溪职高 网站首页.doc

    计算机辅导(知识点汇总) - 慈溪职高 网站首页 知识点汇总 第一章 计算机基础知识(单选15分) 第一台计算机:1946年ENIAC,采用电子管 划分计算机时代的标准:构成元件 第一代(1946-1 ...

  8. 上海高中计算机知识点总结,上海高中高考数学知识点总结(大全)

    上海高中高考数学知识点总结(大全) 学习必备 精品知识点 上海高中高考数学知识点总结(大全) 一.集合与常用逻辑 1.集合概念 元素:互异性.无序性 2.集合运算 全集U:如U=R 交集: 并集: 补 ...

  9. 六年级上册计算机知识点总结,六年级上册数学知识点整理归纳

    学习要温故而知新,在学习新的知识点之前对已学的知识点进行复习整理是非常好的学习习惯,下面是小编给大家带来的六年级上册数学知识点整理归纳,希望能够帮助到大家! 六年级上册数学知识点整理归纳 第一单元 位 ...

  10. Maven相关常见面试题

    Maven相关常见面试题 更好的解答需要大家自行百度,这里主要是列出,单个问题的去搜索了解 1.你们公司使用的maven 版本 我使用的是maven3.6.3(根据你平时用的版本答就好了) 2.使用m ...

最新文章

  1. JBuilder中光标错位的解决办法
  2. 信息系统项目管理知识--信息安全
  3. 9.优先队列,priority_queue
  4. React Native之AppRegistry模块
  5. 5种较为简单的缺失值处理方法
  6. 这样一款超低功耗的集成 2.4 GHz Wi-Fi 和支持长距离的 Bluetooth LE 5.0的SOC,你怎么能不爱它?
  7. SAP云平台Extension Factory和微软Azure上的Lambda Function
  8. 范数在机器学习中的作用_设计在机器学习中的作用
  9. 【遥感数字图像处理】实验:遥感图像显示与数据输入/输出(Erdas版)
  10. SASL讲解,以及在Spark中的应用
  11. ILI9486 和 stm32F407 cortex-M4
  12. IOS --xcode删除Provisioning Profiles文件
  13. 抽象类及继承(本科生和研究生类)
  14. 解析库之——beautifulsoup
  15. 【HDU-5963】朋友【树上博弈】
  16. 什么是AOP切面编程
  17. 中小板企业上市要走哪些流程
  18. jQuery第5章上机练习3(使用jQuery变换网页效果)
  19. 架构模式 - 微内核模式
  20. 某网友嵌入式求职经验总结

热门文章

  1. Debian Gnu/Linux8.5安装GOLANG环境笔记
  2. 集合框架(数据结构之栈和队列)
  3. 集合框架(Collection存储字符串并遍历)
  4. Cisco Router WEB管理
  5. ros 三线负载均衡
  6. 为多个VLAN实现DCHP
  7. 一个java文件里可以有多个类嘛?
  8. 操作系统–银行家算法c语言代码
  9. java中example函数作用,MyBatis逆向工程中的Mapper接口以及Example的实例函数及详解...
  10. stm32双串口通信_一文读懂,基于 STM32 和 CAN 总线的温度监控系统的设计方法