Maven 常用命令及使用

Maven

每个依赖都可以包含以下元素:

- groupId、artifactId 和 version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。
- type:依赖的类型,对应于项目坐标定义的 packaging。大部分情况下,该元素不必声明,其默认值是 jar。
- scope:依赖的范围。
- optional:标记依赖是否可选。
- exclusions:用来排除传递性依赖。
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

基础常用命令

mvn compile 编译,将Java 源程序编译成 class 字节码文件。
mvn test 测试,并生成测试报告
mvn clean 将以前编译得到的旧的 class 字节码文件删除
mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。
mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用

type

type:指明依赖需要引入的类型(jar、war、pom等),默认jar。

scope范围

compile      默认依赖范围,编译的时候和打包的时候把此依赖加入
provided    编译和测试的加入,打包的时候不加入.例如:serveltapi在tomcat中有存在,打包的时候则不需要
runtime     编译的时候不加入,运行的时候加入依赖
system      和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合systemPath使用
test          只有在测试的时候加入,对应编译时对应src/test中代码时也才会加入
import 指明依赖需要引入的类型(jar、war、pom等)默认jar。必须要声明<type>pom</type>。

system示例

<dependency>
    <groupId>org.xx</groupId>
    <artifactId>xx-jar</artifactId>
    <version>1.1.1</version>
    <scope>system</scope>
    <systemPath>${basedir}/WebContent/WEB-INF/lib/xx-jar-1.1.1.jar</systemPath>
</dependency>

option

两个项目A和B,其中A为父项目,B为子项目。在父A项目中引入了单元测试的依赖,optional元素默认值(false)

如果项目B不需要Junit的jar包,那么在其pom文件中不需进行任何处理便可以。如果B项目也需要对应的jar包依赖,可以有两种选择:第一、A项目中对应依赖的optional设置为false或去掉;第二、B项目中直接引入需要的该依赖。

依赖搜索顺序原则

1. 从本地仓库查找构件,如果没有找到,跳到第 2 步,否则继续执行其他处理。
2. 从中央仓库查找构件,如果没有找到,并且已经设置其他远程仓库,然后移动到第 4 步;如果找到,那么将构件下载到本地仓库中使用。
3. 如果没有设置其他远程仓库,Maven 则会停止处理并抛出错误。
4. 在远程仓库查找构件,如果找到,则会下载到本地仓库并使用,否则 Maven 停止处理并抛出错误。

最短路径,最先声明
最短路径如
A->B->C->D
A-E->D
则A依赖E中的D

最先声明
A->B->C
A->D->C
此时路径一致,看pom中谁先声明C,就取谁


聚合

我们可以使用聚合,一次编译多个项目模块

新建简单pom项目
注意:选择packing为pom 
 <artifactId>Parent</artifactId>
 <groupId>com.parent</groupId>
 <version>1.0-SNAPSHOT</version>
 <packaging>pom</packaging>
然后导入模块
 <modules>
    <module>A</module>
    <module>B</module>
  </modules>
  
继承
<parent>
      <artifactId>Parent</artifactId>
       <groupId>com.parent</groupId>
        <version>1.0-SNAPSHOT</version>
        <!-- 相对路径pom文件 -->
	<relativePath>../pom.xml</relativePath>
    </parent>

依赖管理dependencyManagement

管理依赖,子模块继承之后就无需声明版本

也可导入
<dependencyManagement>
    <dependencies>
        <!-- SpringCloud 微服务 -->
        <dependency>
        <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
     </dependencies>
</dependencyManagement>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值