Maven仓库

maven

安装maven前需要先安装jdk环境
需要联网

[root@localhost ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@localhost ~]# rm -rf /usr/bin/java #删除原本主机上的Java程序
[root@localhost ~]# java -version
-bash: /usr/bin/java: 没有那个文件或目录
[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz 
[root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java

添加环境变量(通常情况我们使用第二种方法)

[root@localhost bin]# vim /etc/profile
#末尾添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#释义:
#export:声明一个变量
#jre   java  runtime   environment : java的运行环境
#class   java  依赖库文件
#path  环境变量
[root@localhost bin]# source /etc/profile
[root@localhost bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre/bin
[root@localhost bin]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

安装maven

[root@localhost ~]# tar -zxf apache-maven-3.6.0-bin.tar.gz 
[root@localhost ~]# mv apache-maven-3.6.0 /usr/local/maven
[root@localhost ~]# vim /etc/profile
export PATH=$PATH:/usr/local/maven/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"

Maven相关内容

1.功能
1)maven模型的Java项目对源代码、单元测试代码、资源、jar包等有规范的目录规划
2)解决项目间的依赖关系、版本不一致、版本冲突问题
3)合理的jar包管理机制

2.应用场景----从运维角度理解
1)原来项目中的jar包必须手动复制、粘贴到WEB-INF/lib项目下而借助maven,可以将jar包仅仅保存在仓库中,有需要使用的工程只需要引用这个文件,并不需要重复复制到工程中
2)原来的项目中所需要的jar包都提前下载好的,而maven在联网状态下会自动下载所需要的jar包,首先在本地仓库中找,找不到就在网上进行下载
3)原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而maven会自动将被以来的jar包导进来

jar与war的区别
Jar包是来实现某一个功能,每一个功能都有对应的jar包
War包web程序打包,直接就能部署的,war包就是一个项目

目录结构 举例:/tmp/kgcapp

目录说明
/tmp/kgcapp项目的根目录,存在pom.xml和所有的子目录
/tmp/kgcapp/src/main/resources项目的资源,比如说property文件,springmvc.xml
/tmp/kgcapp/src/test/java项目的测试类。比如说junit代码
/tmp/kgcapp/src/test/resources测试用例,用的找资源
/tmp/kgcapp/src/main/webappweb应用文件按目录,比如存放web.xml、本地图片、jsp视图页面
/s tmp/kgcapp/target打包输出目录,比如打包好的jar包或war包
/tmp/kgcapp/target/classes编译输出目录,用于保存输出的class文件
/tmp/kgcapp/target/test-classe测试编译输出目录

根目录一般存放
pom.xml 项目的配置文件
src目录 java编写的代码

Pom.xml文件说明

Project:根,这是对project添加一些根元素的约束
Modelversion :根指定当前maven模型的版本号
>packaging:指定生成包的格式(jar/war/rar/pom/ear)
Parent标签:指定父级pom文件引用(继承)
Properties:定义配置属性、约束开发规范。
Dependencies标签:指定开发构建(jar包)
>groupId:应该是公司名或者组织名,一般来说groupID有三个部分组成,每个部分之间以“.”分隔,第一部分是项目的用途,比如用于商业的就是com,用于非商业营利性组织的就是org,第二部分是公司名,比如tecent/baidu/alibaba,第三部分是你的项目名。
> artifactID:可以认为是maven构建的项目名,比如你的项目中有子项目,就可以使用“项目名-子项目的命名方式”
Version:版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本。

关于仓库(本地仓库——远程仓库)

1 本地仓库(优先级最高)
Maven会将工程依赖的构件(jar包)从远程下载到本机一个项目下管理,每个电脑默认的仓库是在“用户家目录下的.m2/repository”
2 远程仓库
1)第三方仓库
第三方仓库又称为内部中心仓库,也称为私服
一般是由公司内部构件自己设立的,只为本公司内部共享使用,它既可以作为公司内部构件协作和存档,也可以作为公用类库镜缓存,减少在外部访问和下载的频率(使用了私服就减少了对中央仓库的访问)

2)中央仓库
Maven内置了远程公用仓库
Maven官方仓库
http://repol.maven.org.maven2 这个公共仓库是由maven自己维护,里面有 大量的常用类库,并包含了世界上大部分流行的开源项目构件,目前是以java为主,工程需要的jar如果本地仓库没有,默认从中央仓库下载。

注:maven的使用需要java的源代码 所以需要我们下载所需的源代码
做maven的实验 首先需要有一个java项目 所以需要自己下载一个java的项目

创建一个目录 因为有时候在root的家目录下 有可能下载不成功

[root@localhost ~]# mkdir /usr/test
[root@localhost ~]# cd /usr/test/
[root@localhost test]# mvn archetype:generate -DgroupId=com.kgc.kgcapp -DartifactId=kgcapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
………………
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  09:14 min
[INFO] Finished at: 2021-01-12T11:48:21+08:00
[INFO] ------------------------------------------------------------------------
#参数释义
mvn archetype:generate   #表示构建一个项目
-DgroupId=com.kgc.kgcapp    #组id  
-DartifactId=kgcapp    #项目名称
-DarchetypeArtifactId=maven-archetype-quickstart   #项目框架    工程类项目  代码
-DinteractiveMode=false   #取消交互模式

常用Archetype
1,maven-archetype-quickstart默认的Archetype,基本内容包括:一个包含junit依赖声明的pom.xml
src/maln/java主代码目录及一个名为App的类src/test/java测试代码目录及一个名为AppTest的测试用例

2, maven-archetype-webapp
—个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候可以使用它。生成的项目内容包括:
一个packaging为war且带有junit依赖声明的pom.xml
src/main/webapp/目录
src/main/webapp/index.jsp文件
src/main/webapp/WEB-INF/web.xml文件

在这里插入图片描述

1、编译:mvn compile

[root@localhost test]# cd /usr/test/kgcapp/
[root@localhost kgcapp]# mvn compile
………………
[INFO] Compiling 1 source file to /usr/test/kgcapp/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:27 min
[INFO] Finished at: 2021-01-12T12:15:48+08:00
[INFO] ------------------------------------------------------------------------

[root@localhost kgcapp]# ls
pom.xml  src  target

编译之后会生成 target目录,里面有class文件
再次编译时,会发现速度比较快,是因为插件已经保存在本地仓库仓库当中
每次去下载的东西是插件 和依赖关系
插件所在的目录

[root@localhost repository]# cd /root/.m2/repository/org/apache/maven/plugins/

如何进行加速
使用阿里的maven仓库

[root@localhost kgcapp]# vim /usr/local/maven/conf/settings.xml
#在原本的159行上添加
159     <mirror>
160       <id>aliyun</id> #对仓库的匹配id
161       <name>aliyun-maven</name> #仓库的名称
162       <url>http://maven.aliyun.com/nexus/content/groups/public</url> #仓库的地址
163       <mirrorOf>central</mirrorOf> #截取所有去中央仓库的请求
164     </mirror>

2、打包:因为是工程类,所以会打包成jar包

[root@localhost kgcapp]# mvn package
………………
[INFO] Building jar: /usr/test/kgcapp/target/kgcapp-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  55.828 s
[INFO] Finished at: 2021-01-12T12:30:48+08:00
[INFO] ------------------------------------------------------------------------

3、测试:test

[root@localhost kgcapp]# mvn test
…………
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.967 s
[INFO] Finished at: 2021-01-12T12:36:54+08:00
[INFO] -----------------------------------------------------------------------

4、清除:clean

[root@localhost kgcapp]# mvn clean
…………
[INFO] Deleting /usr/test/kgcapp/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.555 s
[INFO] Finished at: 2021-01-12T12:38:09+08:00
[INFO] ------------------------------------------------------------------------

5、把包上传到本地仓库:install

[root@localhost kgcapp]# mvn install
…………
[INFO] Installing /usr/test/kgcapp/pom.xml to /root/.m2/repository/com/kgc/kgcapp/kgcapp/1.0-SNAPSHOT/kgcapp-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.384 s
[INFO] Finished at: 2021-01-12T12:39:30+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost kgcapp]# ls
pom.xml  src  target

因为maven有生命周期 所以在执行后面的命令时 前面的命令会自动自行

在这里插入图片描述
在这里插入图片描述
6、上传私服: mvn deploy

7、组合命令:

[root@localhost kgcapp]# mvn clean package

注: 在实际环境当中 代码需要反复修改 需要先清空掉原来的 然后重新打包

实验:
使用maven构建出来一个war包(web项目),部署在tomcat上

注:tomcat的安装相关操作前面文章有写过
环境:

主机ip
tomcat192.168.10.30
maven192.168.10.40

maven主机: 下载web项目

[root@localhost ~]# cd /usr/test
[root@localhost test]# mvn archetype:generate -DgroupId=com.kgc.kgcweb -DartifactId=kgcweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
………………
[INFO] project created from Old (1.x) Archetype in dir: /usr/test/kgcweb
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  39.288 s
[INFO] Finished at: 2021-01-13T09:12:31+08:00
[INFO] ------------------------------------------------------------------------

[root@localhost test]# cd /usr/test/kgcweb/
[root@localhost kgcweb]# mvn package #将web项目进行打包
………………
[INFO] Building war: /usr/test/kgcweb/target/kgcweb.war #打包完成
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.386 s
[INFO] Finished at: 2021-01-13T09:17:24+08:00
[INFO] ------------------------------------------------------------------------

[root@localhost kgcweb]# cd target/
[root@localhost target]# ls
classes  kgcweb  kgcweb.war  maven-archiver
[root@localhost target]# scp kgcweb.war root@192.168.10.30:/usr/local/tomcat/webapps #将打包好的war包远程传输到tomcat主机上

tomcat主机: 查看验证

#重启服务(先关闭在启动)
[root@www ~]# /usr/local/tomcat/bin/shutdown.sh
[root@www ~]# /usr/local/tomcat/bin/startup.sh

[root@www ~]# curl 192.168.10.30:8080/kgcweb/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值