maven运行过程解析

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

管理继承属性

比如api和biz都需要某个依赖,那么在echo项目的pom.xml中声明即可,因为根据PO对象的继承关系,api和biz项目会继承echo项目的依赖,这样就可以减少一些重复的输入。


effective pom命令了解


effective pom包含了当前项目的PO对象,直到Super POM对应的PO对象中的信息。要看一个项目的effective pom,只需在项目中执行

mvn help:effective-pom

命令即可查看。maven命令的语法为

mvn [options] [goal(s)] [phase(s)]

maven允许你执行一个或者多个goals/phases。很明显这面的命令help:effective-pom并不是一个phase,那么也就是说它是一个goal。对这个goal只不过是采用了缩写的形式,其全称是这样的:

org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom

以分号为分隔符,包含了groupId,artifactId,version,goal四部分。若groupId为org.apache.maven.plugins则可以使用上述的简写形式。也就是说

mvn help:effective-pom

mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom

是等价的,都是执行了maven-help-plugin这个plugin中的effective-pom这个goal。

好了,继续回到effective pom。我们说过maven在真正构建的时候用的就是effective pom,那么说明effective pom中包含了构建的所有信息,我们以biz项目中的effective pom为例来看下effective pom长什么样子。在biz项目中执行mvn help:effective-pom命令,你会得到如下输出:

<?xml version="1.0"?>

4.0.0

org.maven

echo

1.0.0

org.maven

echo-biz

1.0.0

org.maven

echo-api

1.0.0

compile

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/src/main/java

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/src/main/scripts

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/src/test/java

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/target/classes

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/target/test-classes

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/src/main/resources

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/src/test/resources

/Users/allstarw/workspace/own-proj/misc/maven/echo/biz/target

echo-biz-1.0.0

maven-clean-plugin

2.4.1

default-clean

clean

clean

maven-install-plugin

2.3.1

default-install

install

install

maven-resources-plugin

2.5

default-resources

process-resources

resources

default-testResources

process-test-resources

testResources

maven-surefire-plugin

2.10

default-test

test

test

maven-compiler-plugin

2.3.2

default-testCompile

test-compile

testCompile

default-compile

compile

compile

maven-jar-plugin

2.3.2

default-jar

package

jar

maven-deploy-plugin

2.7

default-deploy

deploy

deploy

对比biz项目的pom.xml,我们发现effective pom中增加了Super POM中继承过来的一些配置,比如说定义了biz项目的源码路径,以及Lifecycle中各个phase绑定的goal:

[phase] [goal]

compile maven-compiler-plugin:2.3.2:compile

package maven-jar-plugin:2.3.2:jar

install maven-install-plugin:2.3.1:install

… …

有了effective pom的概念之后,再来看maven构建的输出日志,是不是有点豁然开朗的感觉?

[INFO] Scanning for projects…

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Build Order:

[INFO]

[INFO] echo

[INFO] echo-api

[INFO] echo-biz

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building echo 1.0.0

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] — maven-install-plugin:2.3.1:install (default-install) @ echo —

[INFO] Installing /Users/allstarw/workspace/own-proj/misc/maven/echo/pom.xml to /Users/allstarw/.m2/repository/org/maven/echo/1.0.0/echo-1.0.0.pom

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building echo-api 1.0.0

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] — maven-resources-plugin:2.5:resources (default-resources) @ echo-api —

[debug] execute contextualize

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory /Users/allstarw/workspace/own-proj/misc/maven/echo/api/src/main/resources

[INFO]

[INFO] — maven-compiler-plugin:2.3.2:compile (default-compile) @ echo-api —

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

[INFO] Compiling 1 source file to /Users/allstarw/workspace/own-proj/misc/maven/echo/api/target/classes

[INFO]

[INFO] — maven-resources-plugin:2.5:testResources (default-testResources) @ echo-api —

[debug] execute contextualize

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory /Users/allstarw/workspace/own-proj/misc/maven/echo/api/src/test/resources

[INFO]

[INFO] — maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ echo-api —

[INFO] No sources to compile

[INFO]

[INFO] — maven-surefire-plugin:2.10:test (default-test) @ echo-api —

[INFO] No tests to run.

[INFO] Surefire report directory: /Users/allstarw/workspace/own-proj/misc/maven/echo/api/target/surefire-reports


T E S T S


Results :

总结:绘上一张Kakfa架构思维大纲脑图(xmind)

image

其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?

若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理

梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。

  • Kafka入门

  • 为什么选择Kafka

  • Kafka的安装、管理和配置

  • Kafka的集群

  • 第一个Kafka程序

  • Kafka的生产者

  • Kafka的消费者

  • 深入理解Kafka

  • 可靠的数据传递

  • Spring和Kafka的整合

  • SpringBoot和Kafka的整合

  • Kafka实战之削峰填谷

  • 数据管道和流式处理(了解即可)

image

image

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理

梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。

  • Kafka入门

  • 为什么选择Kafka

  • Kafka的安装、管理和配置

  • Kafka的集群

  • 第一个Kafka程序

  • Kafka的生产者

  • Kafka的消费者

  • 深入理解Kafka

  • 可靠的数据传递

  • Spring和Kafka的整合

  • SpringBoot和Kafka的整合

  • Kafka实战之削峰填谷

  • 数据管道和流式处理(了解即可)

[外链图片转存中…(img-GNpR0qpy-1714705852701)]

[外链图片转存中…(img-XIPUQx9i-1714705852702)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值