从titan0.5.4源码学习maven

简介: 看了一遍《maven权威指南》,对着titan-0.5.4的源码琢磨了一下。代码没仔细看,撸了一遍pom.xml文件。 以下是我get到的技能: 1.多模块 titan-0.
看了一遍《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。 
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
XML Java Shell
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)(一)
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)
221 1
|
3月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
262 81
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
7月前
|
XML Java Maven
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)(二)
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)
122 0
|
4月前
|
前端开发 Java 编译器
【前端学java】如何从前端视角快速学习Maven
【8月更文挑战第12天】如何从前端视角快速学习Maven
61 2
【前端学java】如何从前端视角快速学习Maven
|
5月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
|
6月前
|
Java 关系型数据库 Maven
SpringBootWebProject学习4、maven打war包
SpringBootWebProject学习4、maven打war包
55 1
|
6月前
|
前端开发 Java 关系型数据库
SpringBootWebProject学习2、默认maven使用
SpringBootWebProject学习2、默认maven使用
32 1
|
6月前
|
XML Java 关系型数据库
SpringBootWebProject学习2、maven配置
SpringBootWebProject学习2、maven配置
59 1
|
7月前
|
前端开发 IDE Java
基于Springboot+MYSQL+Maven实现的宠物医院管理系统(源码+数据库+运行指导文档+项目运行指导视频)
基于Springboot+MYSQL+Maven实现的宠物医院管理系统(源码+数据库+运行指导文档+项目运行指导视频)
309 0
|
5月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
132 0