Maven随笔

目录

一、生命周期和阶段

二、配置

三、依赖

四、插件

五、指令


一、生命周期和阶段

maven有以下三个标准的生命周期:

  • clean:项目清理的处理,包含3个阶段:pre-clean、clean、post-clean

  • default(或 build):项目部署的处理,包含23个阶段:validate、...、compile(编译)、...、package(打包)、...、deploy(部署)

  • site:项目站点文档创建的处理

二、配置

优先级:项目的pom.xml > 用户配置  >  全局配置

类型

在哪

用户配置

定义在%USER_HOME%/.m2/settings.xml,其中 %USER_HOME% 代表用户主目录

全局配置

定义在%M2_HOME%/conf/settings.xml,其中 %M2_HOME% 代表maven的安装目录

idea可以指定用户配置、全局配置、本地仓库:

maven全局配置文件settings.xml详解:参考https://www.cnblogs.com/soupk/p/9303611.html

三、依赖

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-artifact</artifactId>
    <version>3.8.1</version>

    <!--依赖范围-->
    <scope>test</scope>
    <!--依赖排除 -->
    <exclusions>
        <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
    <!-- true表示可选,可阻断依赖的传递 -->
    <optional>true</optional>
</dependency>

1. 依赖范围

compile:默认的范围,编译、测试运行都有效

provided:编译测试有效

runtime:测试运行时有效

test:在测试时有效

system:与本机系统相关联,移植性差(和provided范围一致)

2. 依赖冲突与解决

依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?

冲突解决方案:

(1)如果依赖路径的长度不同,则“短路优先”:

 A—>B—>C—>D—>E—>X(version 0.0.1)

 A—>F—>X(version 0.0.2)

则A依赖于X(version 0.0.2)。

(2)依赖路径长度相同情况下,则“先声明优先”:

A—>E—>X(version 0.0.1)

A—>F—>X(version 0.0.2)

则A依赖于X(version 0.0.2)。

四、插件

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
        <execution>
            <id>default-compile</id>
            <phase>process-classes</phase>
            <goals>
                <!--不是指maven的compile阶段-->
                <goal>compile</goal>
            </goals>
            <configuration>
                <weaveDirectories>
                    <weaveDirectory>${project.build.directory}/classes</weaveDirectory>
                </weaveDirectories>
            </configuration>
        </execution>
    </executions>
</plugin>

phase是指在哪个阶段执行插件

goal是指特定plugin提供的一个个小的功能程序,比如上述aspectj编译插件的plugin.xml中描述了5种功能:aspectj-report、compile、EclipseAjcMojo、help、test-compile

五、指令

maven执行任务或目标时,会在当前目录中查找pom.xml;读取pom.xml,获取所需的配置信息,然后执行目标。

指令作用
mvn help:effective-pom

展示父pom + 工程自身的pom的最终配置,比如项目pom.xml中没有显示定义repository,实际定义在父pom

mvn 生命周期X的阶段Y从生命周期X的第1个阶段 ===执行到===> 阶段Y
mvn deploy执行build所有阶段,根据distributionManagement元素提供的项目分发信息把网站部署到远程服务器或者把构件部署到远程仓库
mvn 阶段Y -P某profile的id使用指定的profile,可以覆盖构建默认值

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值