Maven源码研究之一——准备工作 原

本文探讨Maven作为Java依赖管理标准的角色,及其与Codehaus的渊源。Maven的创始人JasonvanZyl也是Codehaus的联合创始人,这使得Maven的架构深受Codehaus项目如IoC框架Plexus和代码生成工具Modello的影响。文章还对比了Plexus与Spring的异同,并介绍了Modello的代码生成策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven是什么就不用多说了,作为Apache下的顶级项目,Maven目前基本上已经成为Java依赖管理的标准,一个公开发布的项目,没有Maven坐标基本是不合格的——即使你使用其他工具,例如Ant或者Gradle构建。研究Maven主要是因为在上面吃亏比较多,最近刚好也有些定制的需求,所以就学习一下。

最近也观摩了一下我们公司首席架构师的一套代码,他的很多框架受到Maven的影响很深,从里面看到一些神奇的用法,也正好学习一下。

Maven与Codehaus

介绍Maven前先介绍下Codehaus,其实他们没有直接关系,但是源码层面却有千丝万缕的联系。

Codehaus是由Bob McWhirter创办的一个开源组织,旗下也有一些优秀项目,例如比较热门的JVM脚本语言Groovy,以及JSON处理库http://jackson.codehaus.org/等。

为什么说有联系呢?因为Maven的创始人是Jason van Zyl,现任sonatype CTO。他同时也是Codehaus的联合创始人,所以你可以在Maven的代码架构中,看到很多Codehaus的项目。例如IoC框架plexus、代码生成工具Modello等。

如果真的要了解Maven源码,这套东西是不可不知的。

Plexus

Plexus是一套IoC框架,它通过注解和XML来完成Bean的配置和注入,其用法和我们熟悉的Spring非常类似。其实相比Spring,它基本没有什么亮点,发展也比较慢,这里全当知识库补充一下。这里我不写什么介绍了,直接贴一个对照表吧。

<table> <tr> <td>名称</td> <td>Spring</td> <td>Plexus</td> </tr> <tr> <td>配置文件</td> <td>application-context.xml(可定制)</td> <td>components.xml</td> </tr> <tr> <td>bean声明</td> <td>&lt;bean&gt;</td> <td>&lt;component&gt;</td> </tr> <tr> <td>bean声明(注解)</td> <td>&lt;@Component&gt;</td> <td>&lt;@Component/@Service…&gt;</td> </tr> <tr> <td>bean注入(注解)</td> <td>&lt;@Requirement&gt;</td> <td>&lt;@Autowired/@Resource&gt;</td> </tr> <tr> <td>创建容器</td> <td>ApplicationContext appContext = new ClassPathXmlApplicationContext("");</td> <td>PlexusContainer container= new DefaultPlexusContainer();</td> </tr> </table>

Modello

Modello是一个代码生成工具,它可以从一个模型文件产生多个POJO,以及这些POJO与XML的映射处理、以及XML的Schema等内容。在源码目录下面,我们会看到一个mdo文件,那就是它了。它的做法好不好不好说,不过这个代码生成的思路倒是可以借鉴。

Modello

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值