原文链接 译者:carvendy
Maven 开发
这文档描述怎么入门开发Maven。这是一个独立页来描述怎么构建Maven的。
找一些工作来做
首先你需要一些事情来做!解决方案可以在几个JIRA项目中找到。
- JIRA解决方案 当你找到一个你需要的解决方案,工作想在解决方案中加入日志,所核心开发和其他人民在寻找以了解其他人已经在什么。
哪里是源码?
看 https://maven.apache.org/source-repository.html 信息。Maven项目使用了git和svn和本页跟踪情况.
不要忘记单元测试!
你将找到很多单元测试在maven-3的树中。如果可能,创建或者修改单元测试证明问题并修复。
如果问题例子不能被安装的单元测试,加入到集成测试。之前提交分支,在任何用例,你用该运行所有集成测试。测试需要空的资源仓库。看核心IT用例文档里面有更多细节。
创建和提交补丁
当你已经解决了一个问题或者是完成了一个成果,创建一个补丁并加入到讨论的问题当中。创建补丁的指引:
- 补丁是仓库,不是标签。除此之外,你的补丁是已经过时的,而且没有何时的开发头。
- 总是从你的maven项目根目录创建。例如,pom.xml就在哪里。
- 如果你的这部分工作没有JIRA问题,现在创建一个JIRA版本。
- 文件的名字是MNG-<issue number>-<artifact id>.patch。
- 将补丁放到你所处理的JIRA问题(不要它的拷贝注释)。当添加补丁的时候,添加注释说明你做了什么。很快,一些人将会同意这个补丁和关闭问题。
一个创建补丁命令行的例子:
$ svn diff > MNG-123-maven-core.patch
如果挑选一个问题并已经存在了分支,你可以从这个补丁 JIRA获取,并使用它来工作。如果你使用UNIX 平台或者 Cygwinwget和patch命令是可用的。
$ wget -O - -q <URL to the patch from JIRA> | patch -p0
如果补丁在你本地文件MNG-123.patch而且你想同意使用这个命令:
$ patch -p0 < MNG-123.patch
一些笔记:
- 如果使用其他工具创建补丁,要确认补丁不在绝对路径之中。补丁在绝对路径是没有用的,很多时候没有和你相同的目录结构。
- 确认你符合我们的代码规范,是更多。
补丁接纳的条件
这里有一系列关于补丁条件,判断依据:
- 是否有效的而且是有打算的。这是很明显的。
- 它是否符合项目的意图。有些补丁可能是不可采取,因为它和当前的开发社区有着不同的意图。在贡献补丁之前需要讨论好问题,所以你不确定的话,就先在邮件列表里面讨论一下。如果你有不同的意见,欢迎你来讨论(有新的意见)并呼吁邮件列表上的人一起讨论。
- 是否包含测试。任何补丁相关的功能都需要有单元测试或者集成测试。这可以很明显地修复bug(这是需要的),如果没有这个作为基础就不行了。尽量小,改变的时候也不会影响自动化测试的覆盖面。作一个社区,关注当前新增的覆盖面,因为这些区域没有受到自动化测试。
- 是否包含文档。所有新的功需要文件记录反馈给用户,如果文档很粗糙那么功能的推广就会很慢。虽然粗糙是可以被接受的,但是不完整就不可以了。在自动化测试的时候,是尽量通过文档覆盖的内容。
最重要的是不要气馁。同样需求的提交者应该对彼此好一点。并记住,欢迎你来贡献。
涉及的项目:
Maven 有少部分依赖这些项目:
- Plexus
plexus 是一个成熟的容器,支持不同组件的生命周期。这是原生的生命周期,就像是现代的IOC容器,使用需要字段注入来配置。所有Maven的核心功能是Plexus是组件。
了解更多关于 Plexus.
- Modello
Modello 是简单的工具,代表对象模板,用来生成代码和资源。Maven使用Modello来生成所有Java对象,XML的读写,XML Schema和HTML 文档。
了解更多Modello。
- Mojo
“Mojo”给Maven做了两件事情:Maven’s插件API和独立的Mojohaus管理大量插件。
Mojohaus项目本来是Maven非核心插件中。一些比较低的功能逐渐变成了这个项目的一部分。
子项目
- Maven Surefire
Surefire是一个测试框架。它使用了常规的JUnit测试所以你不需要改变代码来使用。它支持BeanShell和Jython脚本测试,有特殊的“电池”来测试验收和Web测试的XML-RPC代码功能测试。
读更多关于Surefire。
- Maven Doxia
Doxia是Maven文档引擎。这是规范和转换的API,习惯用于插件的文档输入和输出。 你可以读更多关于Doxia,还有当前所支持的[文档格式](https://maven.apache.org/doxia/references/index.html。
- Maven SCM
Maven SCM (源码控制管理)是在Maven的依赖中是可以重复使用的API,它被用于你关于SCM涉及到的Maven插件。Maven的部分核心没有依赖 Maven SCM.
读更多关于SCM。
- Maven Wagon
Maven Wagon是一个独立的API,转换文件和文件夹。Maven的核心使用了Wagon API来下载和上传组件和组件元数据,还有网站插件使用它来发布到网站。
读更多关于Wagon
更多链接
- [Maven 代码风格和规范](https://maven.apache.org/developers/conventions/code.html
- Maven JIRA 规范
- Maven SVN 规范
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98424.html