- 作者:zhaozj
- 发表时间:2020-12-23 10:58
- 来源:未知
来自:http://www.jieesoft.com/modules.php?name=News&file=article&sid=155
Maven和ANT是Apache 推出的大名鼎鼎的Build和工程管理工具,国内有人将他做了汉化工作,并推出了maven手册汉化工作,其中手册已经完工,对广大程序员可是一大帮助。进入该网站 用户手册
关于手册 简介 项目对象模型 POM 处理机制 POM 插值机制 POM 继承机制 使用插件 maven.xml文件 简单的maven.xml例子 project节点 目标 Jelly编程 Maven 配置 属性的处理机制 插件的属性 行为属性 使用代理 使用多个远程Repositories 项目设置 开始一个新项目 构建 构建生命周期 在CVS中存放jar文件 重载已声明的依赖包 使用SNAPSHOT依赖 多项目构建和Reactor 离线构建 命令行选项介绍 测试 测试资源 运行一个单独的测试 打包 JAR 资源 部署 固化SNAPSHOT依赖 拷贝依赖JAR包 命名约定 规则和指南 项目 依赖 发布多个包的项目 远程Repository布局 本地Repository布局 生成项目站点 颜色 风格 报告关于手册 这篇Maven使用手册意在通过提供完整的描述和例子,帮助开发人员了解Maven。 如果你有任何建议或者意见请在 Maven使用者邮件列表上发表. 感谢选择Maven! 简介 Maven最早始于Jarkarta Turbine项目,目的是为了简化构建过程。这个项目下面有 几个子项目,每个子项目都有自己的Ant文件,但是区别很小,而且生成的JAR 文件都要check in到CVS中。我们希望有一种标准的方式来构建这些项目,一种可以 清晰描述项目的方式,一种易于发布项目信息的方式,一种在多个项目之间共享JARs 的方式。 这个结果就是产生了一个可以用于构建、管理任何基于java的项目。我们希望我们创造 的这个工具可以让Java开发者的日常工作更加轻松,并有助于理解基于java的项目. 项目对象模型 Maven是基于项目对象模型(POM)的概念而创建的。在这个模型中,所有由Maven产生的 artifact都是清晰定义的项目模型的结果。构建,文档,源码度量,源码交叉引用和其他 任何由Maven plug-in提供的东西都是由POM来控制的。 POM 处理机制 这篇文档简单的描述了Maven执行过程中是如何处理POM的。这里有一些简单的POM例子 来展示继承机制和插值机制。 POM 插值机制 POM(通常以project.xml的名字出现)现在已经被当作Jelly脚本来处理了。大部分时 候,用户无须关心project.xml文件是不是真正的Jelly脚本,但是,如果需要的话, 也可以使用内置值。我也不愿看到逻辑控制语句出现在project.xml中,但是由于 project.xml实际上已经是一个隐含的jelly的脚本,所以它会有足够的灵活性:-)。 下面是一个简单的例子。 3 maven maven Maven 1.0-b5-dev Apache Software Foundation http://jakarta.apache.org/ /images/jakarta-logo-blue.gif 2001 org.apache.${pom.artifactId} /images/${pom.artifactId}.jpg Maven is a project that was created in ${pom.inceptionYear}. ${pom.name} is a Java Project Management Tool POM 继承机制 现在有一种简单方式可以用于在POM中进行继承,下面是一个简单的例子: project.xml super-extendo super-extendo Super Extendo **/*Test*.java **/TestAll.java **/*Abstract*.java 目前对POM父对象的解析还相对较弱,现在对一层以上的继承还没有做过任何测试。尽管如此, 单层继承加上插值机制已经能够给带来很多好处。这些机制的意图在于简化构建的共用问题。 你可以这样定义主模板: 3 commons commons-master Commons Master Maven POM Apache Software Foundation http://www.apache.org jakarta http://jakarta.apache.org/commons/${pom.artifactId}.html http://nagoya.apache.org/ jakarta.apache.org /www/jakarta.apache.org/commons/${pom.artifactId}/ /www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId}/ scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/${pom.artifactId} http://cvs.apache.org/viewcvs/jakarta-commons/${pom.artifactId}/ ... 子POM对象可以这样定义: commons-betwixt commons-betwixt Betwixt ... 这样你就可以在父POM对象中,将子POM对象的${pom.artifactId}替换进去。有许多项目的 构建都以相似的方式进行构建,这样一来,对于项目的公共部分,你就可以使用一个主模板, 然后在子POM对象project.xml中定义有区别的部分,而这部分内容通常很少。 这种机制确实还可以简化那些需要产生多个JAR包的项目。由于project.xml和标准Ant构建 不会相互干扰,我计划在公共部分测试继承机制。 如果你对使用这种机制,DVSL报告会变成什么样感到疑惑,我要说,你很上路。我已经修改 了DVSL报告来适应POM本身,这就是说DVSL转换是基于java对象的。在使用继承和插值机制的 时候,为了正确的产生DVSL报告,这是很有必要的。象上面列出的子模板是无法工作的,我们 需要全面的解析POM。我能说的是,它可以工作了!我所使用的处理方式可能不是最有效率的 方式,但仍有提升的空间。因为POM只会被处理一次(不管怎么说,这就它的原理,我可能漏了 某些东西),然后到处使用,至少这就是我以前试图做的事情,所以我们很有可能会取得平衡。 如果你不使用继承和插值,那么一切照常工作。maven站点本身一切ok,有几个刚部署的站点 已经使用了我昨晚提交的东西了。 使用插件 Maven是一个很紧凑的内核,围绕着它的是许许多多的插件。Maven所有的功能都是由插件来提供 的。 maven.xml文件 项目中的maven.xml文件是Maven在执行过程中要使用的“定制”文件。 在这个文件中,你可以加入Maven构建中需要的额外处理。或者在Maven的“目标”前后附加自己 的代码,如jar 或 test。 Maven使用Jelly 脚本语言, 任何合法的jelly标签都可以在maven.xml中使用。 Maven所采用的goal功能是由werkz标签库提供。更多的信息请看 wiki页面. 简单的maven.xml例子 注意由于Maven并未缺省的定义'compile'目标,下面这个例子没法运行。 这是一个简单的maven.xml例子 ${goals} Now attaining goal number ${goalNumber}, which is ${goal} 你可能会注意到这里一些有意思的东西,下面我们将逐一解释。 project节点 project节点, , 是任何 maven.xml 文件的根节点。 项目节点有一个缺省的属性:default="nightly-build",如果用户只是简单键入 没有参数的maven命令,Maven就会用nightly-build 目标作为缺省目标。 接下来是几个名字空间的声明,如: