下载地址
https://maven.apache.org/download.cgi
tar xf apache-maven-3.9.5-bin.tar.gz
mv apache-maven-3.9.5 /usr/local/maven
ln -s /usr/local/maven/bin/mvn /usr/local/bin/
安装成功
[root@p0-jiantou-scyyglpt-web01 ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_111, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_111/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-696.el6.x86_64", arch: "amd64", family: "unix"
仓库 就是存放 jar包 的地方。
maven存放jar的仓库称为"中央仓库"
私服仓库 也是存放jar的仓库,它是设立在公司内部的. 主要是为了让本地计算机指向私服,这样下载jar的速度更快。然后私服在指向中央仓库。
就是安装maven的 本地计算机或者安装maven的服务器上,就是本地仓库。
使用过mvn命令后,默认maven的本地仓库会生成到当前用户的家目录下 生产成一个.m2的目录,里边的registory 目录就是本地仓库目录。
[root@node4 ~]# mvn
[root@node4 ~]# ls -a |grep m2
.m2
[root@node4 ~]# cd .m2
[root@node4 .m2]# ls
repository
[root@node4 .m2]# ls repository #仓库是空的,因为没有打包,就没有下载任何包
[root@node4 ~]# cd /usr/local/maven/conf/
[root@node4 conf]# vim settings.xml
<mirrors>
<mirror>
<id>alimavenid>
<!--- 镜像仓库名称 ->
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
<mirrors>
<mirror>
<id>alimavenid>
<url>私服地址url>
<mirrorOf>*mirrorOf>
mirror>
配置访问私服仓库的用户名和密码
<servers>
<server>
<id>自定义唯一IDid>
<username>登录私服仓库的用户名username>
<password>登录私服仓库的密码password>
server>
<server>
<id>自定义唯一IDid>
<username>登录私服仓库的用户名username>
<password>登录私服仓库的密码password>
server>
servers>
命令 | 含义 |
---|---|
mvn compile | 编译 |
mvn clean | 清理 (删除target目录) |
mvn test | 测试 |
mvn package | 打包 |
mvn install | 安装到本地仓库 |
mvn clean install | 这是组合执行方式,先清理在安装 |
进入到项目下,在有pom.xml的目录下进行操作
[root@node4 apigateway]# ls
pom.xml src
[root@node4 apigateway]# mvn compile
相关的依赖已经下载成功
[root@node4 ~]# cd /usr/local/maven/repository/
[root@node4 repository]# ls
aopalliance ch commons-codec commons-fileupload commons-net javax org tk xpp3
asm cn commons-collections commons-io dom4j junit oro wsdl4j
backport-util-concurrent com commons-configuration commons-lang io mysql redis xml-apis
cglib commons-beanutils commons-discovery commons-logging jakarta net stax xmlpull
编译后多了targer目录
[root@node4 apigateway]# ls
pom.xml src target
在项目下清理,发现target目录没有了
[root@node4 apigateway]# mvn clean
[root@node4 apigateway]# ls
pom.xml src
发现出现了target目录和打包的jar包
[root@node4 apigateway]# ls
pom.xml src target
[root@node4 apigateway]# cd target/
[root@node4 target]# ls
apigateway.jar apigateway.jar.original classes generated-sources maven-archiver maven-status
不经会生产jar包,还会安装到本地仓库中
在打包时候,需要根据不通的环境进行打包,比如生产环境和测试环境链接的数据库是不同的,那么打包的时候也需要根据环境使用不同环境的数据库。开发会在配置文件提前定义好不同环境的链接数据库的"变量",在打包时候,只要传入调用的哪个环境的变量,就会调用相关环境的变量。例如:
在xml文件中定义
<profiles>
<profile>
<id>prodid>
<properties>
<jdbc.url>jdbc:mysql://192.168.1.1:3306jdbc.url>
properties>
profile>
<profile>
<id>testid>
<properties>
<jdbc.url>jdbc:mysql://192.168.2.2:3306jdbc.url>
properties>
profile>
profiles>
在打包时。传入使用的环境名称,调用的变量值就会全部变成对应环境中所定义的变量值
mvn install -P 环境名称
例如调用生产环境命令如下:
mvn install -P prod
Nexus 是一个强大的 Maven 仓库管理器。它的仓库类型介绍3种:
仓库类型 | 解释 |
---|---|
宿主仓库(hosted) | 保存无法从中央仓库获取的资源 |
代理仓库(proxy) | 代理远程仓库,通过nexus访问中央仓库 |
仓库组(group) | 将若干个仓库组成一个群组,简化配置。仓库组不能保存资源 |