从titan0.5.4源码学习maven
来源:互联网 发布:淘宝引流有哪些软件 编辑:程序博客网 时间:2024/06/05 17:20
看了一遍《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:
就是把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。
以下是我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。
阅读全文
1 0
- 从titan0.5.4源码学习maven
- 从Zero学习String源码
- 从源码学习自定义View
- 从OpenCV源码学习cpp_explicit
- 从OpenCV源码学习cpp_const
- 从OpenCV源码学习cpp_virtual
- maven学习从0到创建一个maven项目(1)
- maven学习从0到创建一个maven项目(2)
- 从git拉源码maven构建后部署脚本
- Qt源码学习(从Win32到Qt)
- 从Android Launcher源码学习自定义标签
- 从ios源码学习代码规范
- [Go语言]从Docker源码学习Go
- 从UIL源码学习到新内容
- 学习vue从使用到源码实现
- 从源码角度学习Volley框架
- 从commons-dbcp源码学习设计思路
- pdf.js源码学习从helloworld开始
- Making the Grade (线性+优化思维?)
- Java笔试题解-流程控制(1)
- ie8及其以下版本兼容性问题之圆角
- CentOs6.5 Oracle静默安装
- [理财]:如何稳步的实现财务自由?
- 从titan0.5.4源码学习maven
- Unity热更新(二):Lua介绍与工具
- test
- [待添加]swift3.0 初始化方法中,你所不知道的事 Designated, Convenience, required
- 网站到底要不要备案?
- 普元EOS Platform7.6如何使用数据实体属性设置中的乐观锁
- 城堡问题(The Castle)
- java炒冷饭系列13 内部类的继承
- iMX6q 的 EIM 接口的配置 可以与 FPGA 通讯,交换数据,最常用的接口配置