maven 和git安装使用

Maven学习

今天我们就来学习一下maven,怎么说呢,maven更像是一种管理的工具,实现的原理是使用插件。

举个例子,比如说,一个公司需要做一个项目,这个项目又分成了很多的模块,每个模块又分成了许多的业务等等,这些需要许许多多的小组进行进行,最后再进行整合。

那么,就有一个很大的问题,IT技术发展这么快的时代里,每个人使用的jar包版本,使用的软件版本,等等,如果不一样的话,就算单个小模块可以进行,一旦整合就会出现各种各样的问题,那么如何避免或者说,尽量的最大程度上减少这种情况发生呢?

那就要用到Maven了,它更像是每一个开发者从网上的一个中央仓库中获取到开发所指定需要的jar包,并且也可以把自己完成的项目打包成一个jar包发布到这个中央仓库中,供其他的模块开发人员使用,同时,项目经理等管理员,可以统一开发所需要的版本,最大程度上减少这种非技术问题的情况发生。

第一章 为什么使用Maven

  • 获取jar包

    • 使用Maven之前,自行在网络中下载jar包,效率较低。如【谷歌、百度、CSDN....】

    • 使用Maven之后,统一在一个地址下载资源jar包【阿里云镜像服务器等...】

  • 添加jar包

    • 使用Maven之前,将jar复制到项目工程中,jar包添加到项目中,相对浪费存储空间

    • 使用Maven之后,jar包统一存储Maven本地仓库,使用坐标方式将jar包从仓库引入到项目中

       

  • 使用Maven便于解决jar包冲突及依赖问题

第二章 什么是Maven

  • Maven字面意:专家、内行

  • Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。

  • 依赖管理:jar之间的依赖关系,jar包管理问题统称为依赖管理

  • 项目构建:项目构建不等同于项目创建

    • 项目构建是一个过程【7步骤组成】,项目创建是瞬间完成的

      1. 清理:mvn clean

      2. 编译:mvn compile

      3. 测试:mvn test

      4. 报告:

      5. 打包:mvn package

      6. 安装:mvn install

      7. 部署:

第三章 安装并配置maven环境

3.6.3版本下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/

  • Maven底层使用Java语言编写的,所以需要配置JAVA_HOME环境变量及Path

  • 将Maven解压非中文无空格目录下

  • 配置MAVEN_HOME环境变量及Path

  • 输入【cmd】,进入命令行窗口,输入【mvn -v】 ,检查Maven环境是否搭建成功

链接:https://pan.baidu.com/s/1mE8k22lwUQJAd-GbQ3zzAg 提取码:twj0

img

img

2、配置环境变量

打开环境变量配置的界面,可以参考怎么安装jdk https://www.cnblogs.com/wyh-study/p/11794205.html (当然这里配置maven的前提是安装并配置了JDK)

新建

img

接着,去path中添加配置bin目录

img

3、用cmd命令行输入mvn -v看看有没有配置成功:(看到如下的界面就说明配置成功了)

img

4、修改阿里云镜像

打开之前下载的maven文件:找到settings.xml文件,编辑打开:

img

img

​
<mirror>
<id>alimaven</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>

5、新建jar包目录

  • Maven配置文件位置:maven根目录/conf/settings.xml

  • 设置本地仓库【默认:C:/用户家目录/.m2/repository】

自定义创建目录,把它当作我后面下载jar包的目标路径

img

6、修改刚刚打开的settings.xml (这里就不给出代码了,每个人的自定义目录可能不一样)

img

第四章 Maven及Idea的相关应用

4.1 将Maven整合到IDEA中

 

4.2 在IDEA中新建Maven工程

 

 

 

 

第五章 Maven核心概念

5.1 Maven的POM

  • POM全称:Project Object Model【项目对象模型】,将项目封装为对象模型,便于使用Maven管理【构建】项目

  • pom.xml常用标签

    <?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">
       <!--   设置父工程坐标-->
       <parent>
           <artifactId>maven-demo</artifactId>
           <groupId>com.shujia</groupId>
           <version>1.0-SNAPSHOT</version>
       </parent>
       <modelVersion>4.0.0</modelVersion>
    ​
       <artifactId>maven-helloworld</artifactId>
    ​
       <properties>
           <maven.compiler.source>8</maven.compiler.source>
           <maven.compiler.target>8</maven.compiler.target>
       </properties>
    ​
       <dependencies>
           <!-- https://mvnrepository.com/artifact/junit/junit -->
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.12</version>
           <scope>test</scope>
           </dependency>
    ​
       </dependencies>
    ​
    </project>

5.2 Maven约定的目录结构

  • 项目名

    • src【书写java源代码】

      • main【书写java主程序代码】

        • java【书写java代码】

        • resources【书写配置文件代码】

      • test【书写测试代码】

        • java【书写测试java代码】

    • pom.xml【书写配置文件代码】

    • target【编译后目录结构】

5.3 Maven生命周期

  • Maven生命周期:按照顺序执行各个命令,Maven生命周期包含以下三个部分组成

    • Clean LifeCycle:在进行真正的构建之前进行一些清理工作。

    • Default LifeCycle:构建的核心部分,编译,测试,打包,安装,部署等等。

    • Site LifeCycle:生成项目报告,站点,发布站点。

 

5.4 Maven插件和目标

  • 插件:插件本质是由jar包和配置文件组成

  • 目标:每个插件都能实现多个功能,每个功能就是一个插件目标。

5.5 Maven的仓库【重要】

  • 仓库分类

    • 本地仓库:为当前计算机提供maven服务

    • 远程仓库:为其他计算机也可以提供maven服务

      • 私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。

      • 中央仓库:架设在Internet上,为全世界所有Maven工程服务。

      • 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。

  • 仓库中的文件类型【jar包】

    • Maven的插件

    • 第三方框架或工具的jar包

    • 自己研发的项目或模块

5.6 Maven的坐标【重要】

  • 作用:使用坐标引入jar包

  • 坐标由g-a-v组成

    [1]groupId:公司或组织的域名倒序+当前项目名称

    [2]artifactId:当前项目的模块名称

    [3]version:当前模块的版本

  • 注意

    • g-a-v:本地仓库jar包位置

    • a-v:jar包全名

  • 坐标应用

    • 坐标参考网址:http://mvnrepository.com

    • 语法,示例

      <dependencies>
         <!-- https://mvnrepository.com/artifact/junit/junit -->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>
         <scope>test</scope>
         </dependency>
      ​
         <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
      </dependency>
      ​
      ​
         <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
      <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>4.0.1</version>
      </dependency>
      ​
      </dependencies>

第六章 Maven的依赖管理

6.1 依赖范围

  • 依赖语法:<scope>

    • compile【默认值】:在main、test、Tomcat【服务器】下均有效。

    • test:只能在test目录下有效

      • junit

    • provided:在main、test下均有效,Tomcat【服务器】无效。

      • servlet-api

6.2 依赖传递性

 

  • 路径最短者有先【就近原则】

  • 先声明者优先

  • 注意:Maven可以自动解决jar包之间的依赖问题

第七章 Maven中统一管理版本号

  • 语法

    <properties>
           <junit-version>4.12</junit-version>
    </properties>
    <dependencies>
           <!-- https://mvnrepository.com/artifact/junit/junit -->
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>${junit-version}</version>
    <!--           <scope>test</scope>-->
           </dependency>
    </dependencies>

第八章 Maven的继承

7.1 为什么需要继承

  • 如子工程大部分都共同使用jar包,可以提取父工程中,使用【继承原理】在子工程中使用

  • 父工程打包方式,必须是pom方式

7.2 Maven继承方式一

  • 在父工程中的pom.xml中导入jar包,在子工程中统一使用。【所有子工程强制引入父工程jar包】

  • 示例代码

    <packaging>pom</packaging>
    <dependencies>
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.12</version>
               <scope>test</scope>
           </dependency>
       </dependencies>

7.3 Maven继承方式二

  • 在父工程中导入jar包【pom.xml】

    <packaging>pom</packaging>
    <dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.12</version>
               <scope>test</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
  • 在子工程引入父工程的相关jar包

    <parent>
       <artifactId>maven_demo</artifactId>
       <groupId>com.atguigu</groupId>
       <version>1.0-SNAPSHOT</version>
       <relativePath>../pom.xml</relativePath>
    </parent>
    <dependencies>
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
           </dependency>
    </dependencies>
  • 注意:在子工程中,不能指定版本号

第九章 Maven的聚合

  • 为什么使用Maven的聚合

    • 优势:只要将子工程聚合到父工程中,就可以实现效果:安装或清除父工程时,子工程会进行同步操作。

    • 注意:Maven会按照依赖顺序自动安装子工程

  • 语法

    <modules>
       <module>maven_helloworld</module>
       <module>HelloFriend</module>
       <module>MakeFriend</module>
    </modules>
  •  

 

 

Git学习与码云实战

Git安装

概述:

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。

下载安装:

下载地址:https://git-scm.com/

下载后傻瓜式一键安装,建议安装在英文目录下

安装完成后在开始菜单中能够找到如下程序

 

或者右击桌面,能够看到如下Git选项

 

  • GUI为用户界面模式

  • Bash为命令行模式

系统配置:

由于git是分布式管理工具,需要输入用户名和邮箱以作为标识,因此,我们按右键打开Git Bash命令框

 

在命令行输入下列的命令:

git config --global user.name "Your Name"    git config --global user.name "xiaohu"
​
git config --global user.email "email@example.com"     git config --global user.email "1165872335@qq.com"

name可以为中文,邮箱建议使用qq邮箱,方便记忆

生成SSH公钥,许多 Git 服务器都使用 SSH 公钥进行认证,所以我们也需要配置该公钥,百度搜索git ssh密钥生成 ,建议使用我给的命令

# 输入如下命令,三次回车即可生成 ssh key
ssh-keygen -t rsa -C "email@example.com"
​
​
ssh-keygen -t rsa -C "1165872335@qq.com"

常用命令

命令备注
git status 查看仓库的改变情况,会有相关的提示操作出现
git add 直接添加所有改动的文件
git commit -m "note" 确认生成本地的版本,note是 版本特点说明
git push 将改动上传到github,若没有指定分支,则需要使用git push origin master
git log 查看版本更新情况
git reset --hard x 回退到某个本地版本,x为git log中出现的hash值的前七位
git clean --xf 清除所有的未提交文件

Git基本操作:

1、创建一个目录

$ mkdir firstgit

2、进入该目录

$ cd firstgit/

3、查看当前所在磁盘的位置

$ pwd
/f/work/firstgit

4、初始化仓库

$ git init
Initialized empty Git repository in F:/work/firstgit/.git/

 

GUI可视化工具安装

下载地址:https://download.tortoisegit.org/tgit/2.8.0.0/,建议采用迅雷下载

 

默认下一步安装

 

安装完成后,右击桌面,弹出如下框即表示安装完成

 

也可以找到有版本控制的文件,右击查看,如下图

 

汉化包安装

尽量建议采用英文的GUI操作,如果你坚持要采用中文版本,那么可以下载语言汉化包

汉化包版本一定要和TortoiseGit版本一致,否则汉化

 

GIT区域介绍

创建文件夹 git init

1、git有3个区域

  • 工作区(working directory):项目的根目录,不包括.git在内的其他文件

  • 暂存区(stage area):是一个看不见的区域,git add命令就是将文件添加到该区域,git add .表示添加所有,git status命令可以查看当前暂存区的文件,文件标识改了,(没有加号重启一下)

  • 本地仓库(repository):指在工作目录下创建的一个.git目录,这是一个隐藏目录。git commit -m "日志"名可以将暂存区的代码提交到本地仓库。git push -u origin master就是将本地仓库的代码推送到远程仓库、

2、git文件的3种状态(尝试查看文件图标变化)

  • 已修改(modified),存在于工作区,文件修改后的状态

  • 已暂存(staged),存在于暂存区,采用git add命令后的状态

  • 已提交(committed),存在于本地仓库,采用git commit命令后的状态

码云+Git配置仓库

1、为什么要这么做?

若需要将本地仓库的代码同步更新到远程托管服务器,则需要与远程服务器建立通信授权连接,最常见的就是利用上述所生成的sshkey进行配置。

常见的托管平台有GitHub,GitLab(开源),码云,企业中也用该产品搭建企业的代码管理平台。

2、前置条件

  • 本地git已安装并配置了Git用户参数,本地已生成了SSHKey

  • 注册码云平台账号,建议采用QQ邮箱进行注册,方便记忆和密码找回

3、秘钥配置

  • 注册好码云后,进入设置中心,再点击SSH公钥

 

  • 在本机磁盘目录中,找到当前用户下的.ssh目录,并编辑其中的.pub结尾的文件,以记事本打开(或者你用其他的编辑器打开都可以)

 

  • 将内容拷贝至码云中,拷贝后,标题能够自动识别,也可以自行修改

 

 

 

 

  • 打开Git Bash终端输入如下命令进行连接测试

xiaohu@DESKTOP-16MTP3U MINGW64 /e/shujia/testjava/testgit (master)
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (180.97.125.228)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
Hi 小虎! You've successfully authenticated, but GITEE.COM does not provide shell access.

使用命令同步代码

代码同步有3个步骤:add、commit、push

a. 在本地磁盘中找一个目录,用于初始化本地仓库存放项目代码

 

b. 将项目拷贝到该目录下,与.git同级(项目不能为空文件夹)

 

c. 使用名,将hospital-parent添加到本地仓库中,使用git add 目录命令

 

 

d. 将项目提交至本地仓库,使用git commit -m 备注命令

 

 

e. 在码云上创建一个仓库壳子,用来存放待上传的项目

 

 

 

注意:上述所复制的链接就是项目所在的仓库地址(我们使用SSH命令进行交互操作)

4、 将本地库与远程库关联

关联命令:git remote add origin git@gitee.com/xxxxxxx.git

 

5、远程仓库与本地仓库合并

这时候不着急推,先将远程仓库的文件同步一次到本地,否则直接推会报错

# 表示从远程master分支拉取代码与本地仓库进行合并,此时一定要保证本地的文件是绿色的
git pull --rebase origin master

 

此时你会发现本地代码多了几个文件

 

6、将本地代码推送到远程分支

命令

# push表示推送到远程分支
git push -u origin master

 

效果实例

刷新码云的远程仓库,能够看到如下结构

 

7、后续代码改动

依次执行以下命令(远程仓库没有发生改动的情况),如果远程分支的代码已经被别人修改,需要先拉取代码,再提交,这个过程稍微复杂一点,若存在冲突则涉及到同一行代码的合并

执行add

# 将已改动的文件添加到暂存区
git add bigdata17/

执行commit

# 将暂存区的代码提交到本地仓库
git commit -m "第二次提交"

执行push

# 将本地仓库的所有更改推送到远程服务器的master分支
git push origin master(完整写法,远程分支若不存在则会被创建)
或者
git push origin(远程仓库与本地仓库存在分支最终关系的写法)
或者
git push(远程仓库只有一个分支,最简单的写法)

8、使用工具同步代码

 

如果修改代码后直接提交可以采用Git Commit -> "master",该操作中可以直接push

如果需要拉取远程分支上的代码,则可以点击TortoiseGit -> Pull

如果仅仅是推送代码到远程分支,则可以点击TortoiseGit -> Push

小乌龟push出现异常sd

Disconnected:No supported authentication methods avaliable (server sent publickey)

 

将小乌龟Network处的C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe路径改为C:\ProgramFiles\Git\usr\bin\ssh.exe即可

 

IDEA+Git

1、在IDEA中设置Git,在File-->Setting-->Version Control-->Git-->Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功

 

 

2、配置码云(gitee)

插件安装

由于IDEA没有直接码云,所以需要选择安装Gitee插件,找到Plugins,搜索Gitee,安装后重启

 

登录信息配置

 

 

 

直接将本项目同步至码云(新建仓库)

 

 

 

 

 

 

代码提交或更新

如果文件发生改动,我们可以采用3种方式进行同步更新

a. Git Bash命令

b. 小乌龟客户端工具

c. IDEA直接同步

这里我直接说IDEA的操作,下面中的蓝色文件已经被修改了,颜色不太一样,红色文件表示是没有版本控制的,绿色是我新建的

 

在项目根目录上右击,选择Git->Commit Directory进行提交

 

提交操作界面,需要你勾选文件,填写日志,并提示了差异对比

 

提交后颜色发生变化

 

现在push到远程仓库

 

查看信息后选择push

 

 

码云发生变化

 

总结

IDEA操作码云和使用工具或命令的原理差不多,均需要add,commit,push等操作,更新则采用pull,如果涉及到多人协同开发时,还会遇到更加复杂的操作,当工具内部无法处理这些功能的时候,我们可以借助系统中的小乌龟来完成

企业团队协作

我们知道git除了我们个人记录代码外,更多的是在工作中使用。在前面2节课掌握最基础的操作后,接下来我们进入协作实战部分,每个公司都有自己的git协作流程,不同开发工具也有不同的git使用方式。由于Git提供的操作指令集非常庞大,但团队常规能使用到的可能也就30%左右,接下来的内容也就围绕这30%展开。

  • 企业使用的Git服务:自建Gitlab、Codeup、Gitee

  • 个人使用的Git服务:Gitee、GitHub

  • Git区域回顾

    Git按照大的分类分为3个区域,分别为:工作区、暂存区、Git仓库

    按照细分为5个区域,分别为:工作区、缓存区、贮存区、本地仓库、远程仓库

  •  

 

 

posted @ 2022-08-10 14:49  小明同学slm  阅读(1003)  评论(0)    收藏  举报