管理继承属性
比如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 :
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Df6H271L-1715828647790)]
[外链图片转存中…(img-gpRBM5Oi-1715828647791)]
[外链图片转存中…(img-AMaz3BOR-1715828647791)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!