从titan0.5.4源码学习maven

cjsoldier 2017-06-21

hbase 模块 源码 Maven xml 插件

看了一遍《maven权威指南》,对着titan-0.5.4的源码琢磨了一下。代码没仔细看,撸了一遍pom.xml文件。
以下是我get到的技能:
1.多模块
titan-0.5.4
titan-all
titan-berkeleyje
titan-cassandra
titan-core
titan-dist
    titan-dist-hadoop-1
    titan-dist-hadoop-2
titan-es
titan-hadoop-parent
    titan-hadoop
    titan-hadoop-1
    titan-hadoop-2
    titan-hadoop-core
titan-hbase-parent
    titan-hbase
    titan-hbase-094
    titan-hbase-096
    titan-hbase-098
    titan-hbase-core
titan-lucene
titan-rexster
titan-solr
titan-test



titan-all:
没有什么实质的作用。titan-all里引用了titan这个项目的其他模块。
假如我有一个模块引用了好几个其它的模块,我不想写那么多<dependency>怎么办?
把这些依赖放到titan-all里,然后只引用titan-all这一个”jar“就好了。

titan-dist:
这个是为了发布的时候用的。注意titan-dist里引用了titan-all。

titan-hbase-0.9.x:

hbase0.94对应haddoop1, hbase0.96,hbase0.98对应hadoop2。由pom的<profile>里的<activeByDefault>true</activeByDefault>明确指出


titan-hbase:
就是把titan-hbase-parent下其他模块的代码都整到一个jar包里。看下图。
titan-hadoop:
就是把titan-hadoop-parent下其他模块的代码都整到一个jar包里。看下图。
titan-hbase-parent和titan-hadoop-parent:
就是一个空壳子。

titan-core里用到了titan-hbase和titan-solr模块里的东西,可是titan-core里并没有依赖titan-hbase和titan-solr。这怎么回事?
    titan-core里通过反射类全名来使用titan-hbase和titan-solr模块下的东西。
HBASE("com.thinkaurelius.titan.diskstorage.hbase.HBaseStoreManager", "hbase"),
"com.thinkaurelius.titan.diskstorage.solr.SolrIndex",











2.抽取共通 ①父pom.xml里定义的东西,子pom.xml可以继承过来。比如父pom.xml里定义的属性,再比如<pluginManagement>的使用。②titan-all模块


3.profile 根据不同的需要编译不同的版本。注意profile有几种不同的激活条件。如果您不了解,强烈建议百度一下。


4.maven-shade-plugin 解决jar包冲突问题。这就厉害了,也非常实用,这个我是看了《OReilly.Learning.Spark.Lightning-Fast.Big.Data.Analysis》这本书之后才知道的。
假如A依赖C.1,B依赖C.2。 显然C.1版本比较旧怎么办? 用maven-shade-plugin这个插件,它会把包名重新命名。说实话我没用过。强烈建议试试。
看看titan三百多个jar包啊。简直就是jar hell。但是这么多jar包人家就能很好的解决冲突问题。


5.pom.xml报错问题。pom.xml里报的错有的是m2eclipse插件的问题。并不是你写错了。 这就需要你了解maven里各种phase。 
登录 后评论
下一篇
云栖号资讯小编
426人浏览
2020-06-01
相关推荐
Hadoop2源码分析-准备篇
2345人浏览
2016-04-19 16:51:16
Hadoop2源码分析-准备篇
2031人浏览
2016-04-25 14:29:58
Hadoop2源码分析-准备篇
895人浏览
2017-11-20 17:17:00
Flink学习笔记记录
1354人浏览
2019-03-08 21:50:17
TINY框架FAQ汇集
1220人浏览
2016-05-09 14:11:34
maven学习
676人浏览
2018-10-26 21:54:55
如何断点调试Tomcat源码
403人浏览
2019-06-26 18:24:05
Maven实战1.1何为Maven
1353人浏览
2017-05-02 14:30:00
Maven入门指南(一)
1323人浏览
2017-05-24 09:05:00
关于技术提升的一点思考
1066人浏览
2017-10-13 16:43:28
0
0
0
832