Manven的简单学习

Maven的作用

  1. 管理jar包的一些列问题
    先从本地仓库下载,但是如果本地仓库没有该jar包的话就到中央仓库下载,而且会自动解决jar包的依赖性
  2. 整合项目
    我们可以将一个大项目分成多个小项目,然后将项目打包到本地仓库中(通过命令打包成jar,war或pom,后续会说到三者区别),供其他项目使用,通过此方法将其整理起来

Maven使用前的准备(示例为下载插件后的eclipse)

  1. 下载Maven: http://maven.apache.org/download.cgi
  2. 配置环境:JAVA_HOME和MAVEN_HOME并将其两者的bin目录配置到path中
  3. 在cmd中输入mvn -v可测试是否成功
  4. 配置本地仓库:在maven文件的根目录里面有个setting.xml文件 在这里插入图片描述
  5. 在eclipse里面创建maven项目之前想要配置maven版本和本地仓库在这里插入图片描述在这里插入图片描述

Maven的使用

  1. 创建Maven项目,第一次会下载一些需要的jar包,所以会稍微久一点
  2. 在pom.xml开头部分中会有一个唯一的gav(个人习惯)
 <groupId>org.studey.maven</groupId>
 <artifactId>study_1</artifactId>
 <version>0.0.1-SNAPSHOT</version>

这个可以理解成这个项目的坐标,当我们使用时可以用这个gav来定位这个项目

  1. 注入jar包格式如下(普通情况在去mvn那里复制过来即可导入,如果是自己的项目就打包安装到仓库后再写)
 <dependencies>
        <dependency>
            <groupId>xxx</groupId>
            <artifactId>xxx</artifactId>
            <version>xxx</version>
            <scope>范围</scope>
        </dependency>
  </dependencies>
  1. 写完代码后输入相关指令后即可运行,常见指令会在另一处说

maven传递依赖

  1. 传递依赖:
    举个例子,如果A.jar依赖B.jar,而B.jar依赖C.jar,此时当**pom.xml文件中B和C的jar包的scope为compile(默认)**时,A.jar会自动依赖C.jar

  2. 手动取消传递依赖
    举个例子,A.jar依赖B.jar,B.jar依赖C.jar和D.jar,此时pom.xml文件中B和C,D的jar包的scope为compile(默认),A.jar会自动依赖C.jar和D.jar,但是我们知道我们并没用使用到D.jar,此时我们可以手动取消D.jar的依赖(在pom里加入下面代码)

 	<exclusions>
      <exclusion>
         <groupId>xxx</groupId>
         <artifactId>xxx</artifactId>
      </exclusion>
   </exclusions>

统一JDK版本

  1. 统一单个项目的JDK版本(例子为1.8版本)
<profiles>
		<profile>
	          <id>jdk-1.8</id>
	          <activation>
	            <activeByDefault>true</activeByDefault>
	            <jdk>1.8</jdk>
	          </activation>
	          <properties>
	            <maven.compiler.source>1.8</maven.compiler.source>
	            <maven.compiler.target>1.8</maven.compiler.target>
	            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	          </properties>
		</profile>
	</profiles>

设置一个变量

在pom.xml中设置一个变量便利于我们修改一些重复使用的东西,例如版本号,编码格式等等,我们可以用一个变量来替代以方便修改(这种变量的写法有点类似于EL表达式)
这个例子中的命名时很不规范的,此处只是为了做出明显的区分
将junit的版本号定为一个变量,方便修改

 <properties>
  		<demo_1>4.1</demo_1>
  </properties>

  <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${demo_1}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

继承

在依赖中,我们要经常盯着该依赖与依赖本身的依赖的关系是否为compile,这样很麻烦,我们此时可以用继承获取其两者原本不是compile的依赖(简单说就是如果依赖A继承依赖B,那A就继承了B的所有依赖,不管B与这些依赖的关系是否为compile)

注意点:

  1. 父工程在创建maven项目时的Packaging要为pom
  2. 父工程的依赖格式要与普通工程的格式多加一个dependencyManagement
  <dependencyManagement>
	  <dependencies>
	        <dependency>
	            <groupId>junit</groupId>
	            <artifactId>junit</artifactId>
	            <version>4.0</version>
	            <scope>test</scope>
	        </dependency>
	    </dependencies>
 </dependencyManagement>  
  1. 子工程如果要继承父工程需要进行两个配置:父工程的gav该工程到父工程pom.xml的相对路径(例如:…/Demo/pom,xml)
    tips:如果父类的g是一样的可以删除子类的g
 <parent>
  	  <groupId>xxx</groupId>
	  <artifactId>xxx</artifactId>
	  <version>xxx</version>
	  <relativePath>到父工程pom.xml相对路径</relativePath>
  </parent>
  1. 在子工程中声明用到了父工程的那些依赖(只需要ga无需v),格式仍然向原本的依赖一样即可
 <dependencies>
	        <dependency>
	            <groupId>xxx</groupId>
	            <artifactId>xxx</artifactId>	    
	        </dependency>
	    </dependencies>

Maven的聚合

举个例子,项目demo1依赖项目demo2,那此时必须先用到demo1加入(install)到本地仓库,
但是如果有多个项目的时候要进行多次install,太过累赘.此时我们可以使用一个总项目(该项目的Packaging为pom)进行聚合.

  <modules>
  	<module>项目1的相对根路径(例:../demo1)</module>
  	<module>项目2的相对根路径(例:../demo2)</module>
  </modules>

tips:项目写的时候无先后顺序,无需管先使用到哪一个

Maven的常见命令

我觉得这个人写的非常通俗易懂了在这里插入图片描述

https://blog.csdn.net/weixin_33814685/article/details/93560414

scope属性的范围

compiletestprovided
主程序(main)x
测试程序(test)
部署(运行)xx

Jar,War和Pom的区别

JarWarPom
将会打包成jar用作jar包使用将会打包成war,发布在服务器上的工程。如网站或服务用在父级工程或聚合工程中。用来做jar包的版本控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值