`

maven学习笔记

阅读更多
在mvn archetype:create这样的语法中,这里archetype是一个插件标识而create是目标标识。

Maven的核心对你项目构建中特定的任务几乎毫无所知。就它本身来说,Maven不知道如何编译你的代码,它甚至不知道如何制作一个JAR文件,它把所有这些任务代理给了Maven插件,像Compiler插件和Jar插件,它们在需要的时候被下载下来并且定时的从Maven中央仓库更新。当你下载Maven的时候,你得到的是一个包含了基本躯壳的Maven核心,它知道如何解析命令行,管理classpath,解析POM文件,在需要的时候下载Maven插件。

在Maven中, 阶段称为“构建生命周期”中的一个步骤。生命周期是包含在一个项目构建中的一系列有序的阶段。Maven可以支持许多不同的生命周期,但是最常用的生命周期是默认的Maven生命周期,这个生命周期中一开始的一个阶段是验证项目的基本完整性,最后的一个阶段是把一个项目发布成产品

Maven执行一个阶段的时候,它首先会有序的执行前面的所有阶段,到命令行指定的那个阶段为止。每个阶段对应了零个或者多个目标。

项目对象模型(POM),一个项目的声明性描述。当Maven运行一个目标的时候,每个目标都会访问定义在项目POM里的信息。

目标在POM的上下文中运行。目标是我们希望针对项目运行的动作,而项目是通过POM定义的。

groupId 团体标识, 一般表现为组织名称的逆向域名

artifactId 在groupId下的表示一个单独项目的唯一标识符。

Maven仓库是通过结构来定义的,一个Maven仓库是项目构件的一个集合,这些构件存储在一个目录结构下面,它们的格式能很容易的被Maven所理解。在一个Maven仓库中,所有的东西存储在一个与Maven项目坐标十分匹配的目录结构中。

Maven从远程仓库下载构件和插件到你本机上,存储在你的本地Maven仓库里。一旦Maven已经从远程仓库下载了一个构件,它将永远不需要再下载一次,因为maven会首先在本地仓库查找插件,然后才是其它地方。在Windows XP上,你的本地仓库很可能在C:\Documents and Settings\USERNAME\.m2\repository

当用Maven来创建WAR或者EAR,你可以配置Maven让它在生成的构件中捆绑依赖,你也可以配置Maven,使用provided范围,让它排除WAR文件中特定的依赖。provided范围告诉Maven一个依赖在编译的时候需要,但是它不应该被捆绑在构建的输出中。这个范围告诉 Maven jar 文件已经由容器“提供”了,因此不再需要包含在 war 中。

测试范围依赖是一个只在测试编译和测试运行时在 classpath 中有效的依赖。如果你的项目是以 war 或者 ear 形式打包的,测试范围依赖就不会被包含在项目的打包输出中。

Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly 插件以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符。  要配置 Maven Assembly 插件, 我们需要在 pom.xml 中的 build 配置中添加如下的 plugin 配置。



配置Maven
做项目的第一件事情,当然是给项目起名字和建立目录。这可由Maven来完成。首先安装Maven至D:\Maven,设定MAVEN_HOME为D:\Maven并设定PATH。
Maven默认的remote repository是ibiblio.org,这个地方有些人上不去,因此要更改一下。Maven找寻配置参数的默认的顺序是从maven.jar中的defaults.properties开始。打开该文件,修改:
    maven.repo.remote =     http://apache.linuxforum.net/dist/java-repository, http://dist.codehaus.org, http://mirrors.sunsite.dk/maven/,  http://public.planetmirror.com/pub/maven, http://www.ibiblio.org/maven
Maven默认的本地文件保存在Document and Setting的user.home里面,非常不便。在%MAVEN_HOME%下建立一个local目录,将本地的repostiory保存在此,以免重装系统丢失。
    maven.home.local = ${maven.home}/local
Maven的提示语言在中文环境中可能出现乱码,进入maven.jar,发现org\apache\maven\messages目录下的messages_zh_CN.properties里面直接写了中文字符。删掉它!就不会乱码了。(或者用native2ascii转换)

好了,可以开工了。执行maven genapp,采用web模版。id设定为sample。输入maven eclipse,为该项目增加eclipse支持。
进入eclipse,导入workspace下面的Sample Project。由于缺少MAVEN_REPO变量,Eclipse提示编译失败。
在Eclipse的Preferences – Java - Build Path - Classpath Variables中添加名为MAVEN_REPO的变量,指向D:\maven\local\repository。
如果想让eclipse支持直接运行maven的goal,可以安装mavenide插件。



本节相关网站:
http://maven.apache.org MAVEN官方网站
http://maven.huangdong.com 黄冬的MAVEN中文站
http://mevenide.codehaus.org MavenIDE Eclipse插件
http://www.binamics.com/mavenworkshop MavenWorkshop Eclipse插件

Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics