《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
管理继承属性
比如api和biz都需要某个依赖,那么在echo项目的pom.xml中声明即可,因为根据PO对象的继承关系,api和biz项目会继承echo项目的依赖,这样就可以减少一些重复的输入。
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)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
[外链图片转存中…(img-GNpR0qpy-1714705852701)]
[外链图片转存中…(img-XIPUQx9i-1714705852702)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!