Git+Maven

萧英光
2023-12-01

一 Git

设置用户签名

git config --global user.name wcw
git config --global user.email 111@qq.com

1.1 Git常用配置

初始化本地库

git init

查看本地库状态

git status  

添加暂存区

将本地文件添加到暂存区

git add 文件/目录

移出暂存区

移除暂存区、但文件依然存在于工作目录

git rm --cached 文件/目录

提交本地库

将暂存区的文件提交到本地库

git commit -m "版本信息" 文件/目录

查看提交版本

git reflog //查看版本信息

git log    //查看详细的用户签名及其提交的版本信息

版本穿梭

git reflog  //通过命令,查看版本号
git reset --hard 版本号   //版本穿梭

1.2 分支

查看分支

git branch -v

创建分支

git branch 分支名

切换分支

git checkout 分支名

合并分支

git merge 分支名    //将指定分支合并到当前分支

产生冲突

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法替我们决定使用哪一个,必须人为决定新代码内容


1.3 远程仓库

创建别名

git remote -v //查看当前所有远程库别名
  
git remote add 别名 远程地址

本地库推送

git push 别名/git链接 分支名

克隆远程仓库到本地

git clone 仓库地址

配置Git忽略文件

创建~/xxx.ignore文件
# 所有.log文件都不用要
*.log
# 所有.idea文件都不用要
*.idea  

二 Maven

pom.xml

​ gav --唯一定位一个maven项目

  1. groupId: 组织id,一般域名倒写+项目名

  2. artifactId:项目名称,也是模块名称对应groupId中项目中的子项目

  3. version:项目版本号。通常在版本后带 -SNAPSHOT

  4. name:项目的名称

packaging 项目打包类型

jar、war、rar、ear、pom(一般做父工程)。默认jar

properties

​ 配置属性,项目源码编码方式等

<properties>
		<!--源码编译jdk版本-->		
		<maven.compiler.source>1.8</maven.compiler.source>
		<!--运行代码的jdk版本-->
		<maven.compiler.target>1.8</maven.compiler.target>
		<!--项目构建使用的编码,避免中文乱码-->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!--生成报告的编码-->
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

relativePath

父项目的pom.xml文件的相对路径

插件plugings

​ maven功能:执行清理、编译、测试、报告、打包

  1. clean插件maven-clean-plugin:2.5
    清除target目录

  2. resources插件maven-resources-plugin:2.6
    把项目需要的配置文件拷贝到指定的目录,默认将src/main/resources目录下文件拷贝到classes目录下target/classes—>将配置文件加载到target

  3. compile插件maven-compiler-plugin
    执行前调用resources插件,将src/main/java源码编译成字节码文件生成class文件,再把编译好的class文件输出到target\classes目录下

  4. test测试插件

    把src\test\java下的代码编译成字节码输出到target\test-classes,同时把src\test\resources下的配置文件拷贝到target\test-classes

  5. package打包插件maven-jar-plugin
    把class文件、配置文件打成一个jar(war或其它格式)包

  6. deploy发布插件maven-install-plugin
    把构建好的artifact部署到本地仓库,还有一个deploy插件是将构建好的artifact部署到远程仓库

2.1 Maven依赖范围

范围依赖compile、provide、runtime、test、system

  1. compile:依赖作用在编译,测试,运行,由于运行时需要,所以编译范围的依赖会被打包(会被打包)
  2. test:依赖范围只在测试编译和测试运行时需要。不会打包
  3. provide: 依赖在编译和测试时需要,在运行时不需要。不会打包
  4. runtime:依赖范围在运行和测试系统时需要,但在编译时不需要。例如:jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包(会打包)
  5. system:范围依赖与provide类似,但是必须显示的提供一个对于本地系统中jar文件的路径

2.2 Maven常用设置

变量设置

  1. 全局变量

在pom.xml文件中,properties用于定义全局变量

POM中通过${property_name}的形式引用变量的值,定义全局变量

<properties>
		<spring.version>4.3.10.RELEASE</spring.version></properties>
  1. 引用局部变量
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>${spring.version}</version>
</dependency>

指定资源位置

src/main/java和src/test/java这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但这两个目录中的其他文件都会被忽略掉,如果需要把src目录下的文件包放到target/classes目录,作为输出的jar一部分。要指定资源文件位置。

<build>
	   <resources>
	       <resource>
	           <!--所在的目录-->
	           <directory>src/main/java</directory>
	           <includes>
	               <!--包括目录下的.properties,.xml 文件都会扫描到-->
	               <include>**/*.properties</include>
	               <include>**/*.xml</include>
	               <include>**/*.txt</include>
	           </includes>
	           <!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
	           <filtering>false</filtering>
	       </resource>
	   </resources>
</build>

2.3 Maven项目依赖

多个依赖之间,导致出现相同依赖并出现依赖的版本不一致。

依赖冲突解决

  1. 依赖调节原则: 第一申明者优先原则,在pom文件中定义依赖,优先使用先申明的依赖为准(依赖的顺序,靠前的优先考虑)

  2. 根据路径近者优先原则

  3. 如果一个pom引入两个相同jar包,以最后一个为准

可选依赖optional

加入optional,控制当前依赖能否被传递,true不能传递,false默认,能传递

<dependency>
    <groupId>com.xiaozhi</groupId>
    <artifactId>A</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- optional=true,依赖不会传递,该项目依赖A
          之后依赖该项目的项目如果想要使用A,需要重新引入 -->
    <optional>true</optional>
</dependency>

排除依赖

使用exclusions标签将传递过来的依赖排除出去

<dependency>
    <groupId>g</groupId>
    <artifactId>a</artifactId>
    <version>c</version>
    <exclusions>
        <exclusion>
             <groupId>排除的g</groupId>
             <artifactId>排除的a</artifactId>
        </exclusion>
     </exclusions>
</dependency>

版本锁定

采用直接锁定版本的方法确定依赖jar包的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本为准添加到工程中

dependencyManagement标签中锁定依赖的版本

<dependencyManagement>
  <dependencies>
  </dependencies>  
</dependencyManagement>  

2.4 分模块构建maven工程

分模块构建maven工程

按业务模块进行拆分,每个模块拆分成一个maven工程

maven工程的继承

maven工程之间,子工程继承父工程后,就可以使用父工程中引入的依赖

父工程的打包方式必须是pom 继承其他maven父工程的项目在pom文件中通过parent标签进行父工程的继承

父工程
<groupId>com.project</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

子工程
<parent>
		<groupId>com.project</groupId>
		<artifactId>parent</artifactId>
		<version>1.0-SNAPSHOT</version>
</parent>  

maven工程聚合

pom.xml中使用<modules>标签将其他maven工程聚合到一起,聚合的目的进行统一操作

<groupId>org.example</groupId>
    <artifactId>Thread</artifactId>
    <version>1.0-SNAPSHOT</version>
<modules>
    <module>maven_dao</module>
    <module>maven_service</module>
    <module>maven_web</module>
    <module>maven_pojo</module>
</modules>
 类似资料: