Maven
本质:项目管理工具。可以做到整体编译、测试,快速打包部署。
作用:
- 项目构建,提供标准的构建方式
- 依赖管理,避免版本冲突
生命周期:
mvn clean # 清理编译项目
mvn compile # 编译项目
mvn test # 测试项目
mvn package # 项目打包
mvn install # 安装到仓库中
maven地址:https://maven.apache.org/
下载地址:https://maven.apache.org/download.cgi
仓库地址:https://mvnrepository.com/
创建maven工程
1. 配置环境变量
maven下载完,配置文件settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
| Default: ${user.home}/.m2/repository localRepository 指定包下载的位置
-->
<!-- 本地仓库位置 -->
<localRepository>D:\java\m2</localRepository>
...
<!-- 远程仓库位置 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
2. 创建项目
可以使用idea开发工具构建,创建maven工程/web工程
创建完,需要配置坐标pom.xml文件
基本操作
maven手动配置jar包到本地仓库
mvn install:install-file -Dfile="本地的jar包文件 例/root/xxx.jar" -DgroupId="一般是groupId的名字,坐标 com.alibaba.abc" -DartifactId="名字 abc" -Dversion=1.1.0 -Dpackaging=jar
# 对应
<dependency>
<groupId>com.alibaba.abc</groupId>
<artifactId>abc</artifactId>
<version>1.1.0</version>
</dependency>dependency>
坐标&pom.xml
常用pom文件
父容器配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.yan</groupId>
<artifactId>mjob</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mjob</name>
<description>聚合服务</description>
<!-- 打包类型:war/jar/pom(代表当前项目是父工程,做聚合管理) -->
<packaging>pom</packaging>
<!--版本号管理 -->
<properties>
<alibaba.version>2.2.6.RELEASE</alibaba.version>
</properties>
<!-- 引入子模块 -->
<modules>
<module>yan-commo</module>
<module>yan-coupon</module>
</modules>
<!-- 依赖管理 这样子包继承父类,按需下载包,不需要不进行下载,减少包的体积-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
》
</project>
子模块配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>mjob</artifactId>
<groupId>cn.yan</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>yan-commo</artifactId>
<name>yan-commo</name>
<version>0.0.1-SNAPSHOT</version>
<description>公共组件 - 每个微服务公共依赖</description>
<!-- 打包类型:war/jar/pom(代表当前项目是父工程,做聚合管理) -->
<packaging>jar</packaging>
<!-- 依赖包 -->
<dependencies>
<dependency>
<groupId>com.yan.bpm</groupId>
<artifactId>bpm-common</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 依赖范围
compile:主程序 有效 、测试程序 有效、参与打包
test:主程序 无效 、测试程序 有效、不参与打包
provided:主程序 有效 、测试程序 有效、不参与打包
(比如:servlet-api.jar的包,远程服务tomcat默认是有这些包,本地打包就不再需要,避免冲突)
-->
<scope>compile</scope>
<scope>test</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 除去一些包 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<!-- 打包后的名字 xxx.jar -->
<finalName>打包后的名字</finalName>
</build>
</project>
搭建私服仓库
-
下载 nexus
下载地址:https://help.sonatype.com/repomanager3/product-information/download
-
配置环境变量
NEXUS_HOME配置:指向安装目录的地址
然后在Path环境变量下,添加
%NEXUS_HOME%\bin
-
常用命令
# 默认端口 8081 # 在 D:\xxx\nexus-3.20.1-01\etc 目录下 nexus-default.properties文件 # 修改配置文件 - application-port=8081 更改默认端口 # cmd 命令下进行启动 (前台运行)启动命令:nexus /run (后台运行)安装:nexus.exe /install 卸载:nexus.exe /uninstall 启动:nexus.exe /start 停止:nexus.exe /stop 查看:nexus.exe /status
启动成功,访问页面:http://localhost:8081,出现页面代表安装成功
-
配置登录密码
在D:\xxx\sonatype-work\nexus3目录下,存放第一次的默认密码 记住密码,如果修改密码后,该文件会被删除 然后,我们在登陆页面,输入用户名(admin)和密码,登录成功会引导创建新的密码 然后,Configure Anonymous Access 下选择Enable anonymous access (允许匿名下载包)
-
配置管理
小齿轮图标:进行配置,允许匿名授权,如果不允许,需要创建对应的用户账户,分配权限管理。
-
nexus与阿里云仓库地址进行配置
# 我们搭建架构:本地仓库 - 远程私服仓库 - 阿里云远程仓库 - 国外远程仓库
Create repository : 进行创建自定义的仓库地址
其中:
maven-central:中央仓库地址
maven-public:做聚合的
maven-releases:是释放版本
maven-snapshots:是开发版本
区别: 如果version是SNAPSHOT,执行maven的deploy,会打包进入到maven-snapshots下 如果version是RELEASES,执行maven的deploy,会打包进入到maven-releases下 <!-- 依赖坐标 --> <groupId>cn.yan</groupId> <artifactId>mjob</artifactId> <version>1.0-SNAPSHOT</version> <version>1.0-RELEASES</version> maven-public: 是做聚合的,http://localhost:8081/repository/maven-public,访问这个,就代表会访问maven-central、maven-releases、maven-snapshots地址,不需要再切换其他的地址。
图2. 进行配置地址:
默认地址: https://repo1.maven.org/maven2
更改地址: http://maven.aliyun.com/nexus/content/groups/public/
-
本地配置maven
# 本地的maven的配置xml <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/repository/maven-public/</url> </mirror> # 插件仓库配置,修改pom.xml <profile> <pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 --> <pluginRepository> <!-- 唯一id --> <id>nexus</id> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
-
下载
# 前提条件 nexus 目录需要有4G以上内存 # 然后 我们本地引入包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.3</version> </dependency> # 然后在私有仓库上进行查看,所下载的包
-
上传
# 本地的maven的配置xml <!-- 上传私服 --> <servers> <server> <id>nexus</id> # 与本地私服的名字保持一致 <privateKey>admin</privateKey> # 用户名 <passphrase>密码</passphrase> </server> </servers> # 传仓库地址,上传2个仓库地址,Releases、Snapshots 修改pom.xml <distributionManagement> <repository> <id>nexus</id> <name>Releases</name> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus</id> <name>Snapshots</name> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
然后执行deploy,进行打包,上传。
在私有仓库中可以查看到,自己上传的包,自己定义的版本号。