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

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

参考资料

猜你喜欢

转载自blog.csdn.net/qq_36838191/article/details/82963941