Maven学习笔记
From: http://topcat.javaeye.com/blog/310268
1.安装
安装很简单
・
去
http://maven.apache.org/download.html
下个新版本的maven。
・
解压到本地disk,配置路径m2_home(解压的maven文件夹路径)、path里添加%m2_home%\bin。
・
打开命令行,输入mvn -v如出现:
Maven version: 2.0.9
Java version: 1.6.0_06
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
表示安装成功。
2.修改配置文件
配置文件的地址:%m2_home%\conf\settings.xml
・
打开配置文件在<profile></profile>内添加如下内容:
< id >myserver </ id >
< repositories >
< repository >
< id >central </ id >
< url >http://192.168.16.11:8081/artifactory/repo </ url >
</ repository >
< repository >
< id >snapshots </ id >
< url >http://192.168.16.11:8081/artifactory/repo </ url >
</ repository >
</ repositories >
< pluginRepositories >
< pluginRepository >
< id >central </ id >
< url >http://192.168.16.11:8081/artifactory/repo </ url >
</ pluginRepository >
< pluginRepository >
< id >snapshots </ id >
< url >http://192.168.16.11:8081/artifactory/repo </ url >
</ pluginRepository >
</ pluginRepositories >
</ profile >
这里是定义我使用的私服。
在该文件最后添加
<activeProfiles>
<activeProfile>myserver</activeProfile>
</activeProfiles>
这里是将刚才定义的使用的私服激活。
3.help插件
help:active-profiles
列出当前构建中活动的Profile(项目的,用户的,全局的)。
help:effective-pom
显示当前构建的实际POM,包含活动的Profile。
help:effective-settings
打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置。
help:describe
描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的 groupId 和 artifactId。
使用help:describe 目标来获取这些信息。通过 plugin 参数你可以指定你想要研究哪个插件,你可以传入插件的前缀(如 help 插件就是 maven-help-plugin),或者可以是 groupId:artifact[:version] ,这里 version 是可选的
如:
mvn help:describe -Dplugin=help
上
面的命令使用 help 插件的 describe 目标来输出 Maven Help 插件的信息
mvn help:describe -Dplugin=help -Dfull
输出更详细的信息
4.创建项目
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook
・
Maven Archtype插件创建了一个与artifactId匹配的目录――simple。这是项目的基础目录。
・
每个项目在文件pom.xml里有它的项目对象模型 (POM)。这个文件描述了这个项目,配置了插件,声明了依赖。
・
我们项目的源码了资源文件被放在了src/main目录下面。在我们简单Java项目这样的情况下,这个目录包含了一下java类和一些配置文件。在其它的项目中,它可能是web应用的文档根目录,或者还放一些应用服务器的配置文件。在一个Java项目中,Java类放在src/main/java下面,而classpath资源文件放在src/main/resources下面。
・
我们项目的测试用例放在src/test下。在这个目录下面,src/test/java存放像使用JUnit或者TestNG这样的Java测试类。目录src/test/resources下存放测试classpath资源文件。
mvn install
将该项目打包安装到服务器上(运行该命令后有maven库里就会添加一个该项目)
5.Maven的生命周期
resources:resources
Resources插件的resources目标绑定到了resources 阶段。这个目标复制src/main/resources下的所有资源和其它任何配置的资源目录,到输出目录。
compiler:compile
Compiler插件的compile目标绑定到了compile 阶段。这个目标编译src/main/java下的所有源代码和其他任何配置的资源目录,到输出目录。
resources:testResources
Resources插件的testResources目标绑定到了test-resources 阶段。这个目标复制src/test/resources下的所有资源和其它任何的配置的测试资源目录,到测试输出目录。
compiler:testCompile
Compiler插件的testCompile目标绑定到了test-compile 阶段。这个目标编译src/test/java下的测试用例和其它任何的配置的测试资源目录,到测试输出目录。
surefire:test
Surefire插件的test目标绑定到了test 阶段。这个目标运行所有的测试并且创建那些捕捉详细测试结果的输出文件。默认情况下,如果有测试失败,这个目标会终止。
jar:jar
Jar插件的jar目标绑定到了package 阶段。这个目标把输出目录打包成JAR文件。
1)
Maven坐标
Maven通过坐标来精确定位一个项目。Maven坐标通常用冒号来作为分隔符来书写,像这样的格式:groupId:artifactId:packaging:version。
groupId
d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。来自Sonatype的项目有一个以com.sonatype开头的groupId,而Apache Software的项目有以org.apache开头的groupId。
artifactId
在groupId下的表示一个单独项目的唯一标识符。
version
一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。
项目的打包格式也是Maven坐标的重要组成部分,但是它不是项目唯一标识符的一个部分。一个项目的groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的项目。
packaging
项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。
2)
Maven依赖
在pom.xml文件里<dependencies></dependencies>之间添加依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
那为这个项目在运行maven的时候会去仓库拉下log4j的包,如果log4j的包又依赖了别的包将会把log4j的依赖包一起拉下来,如此只到所有的依赖都被满足。
3)
浏览你的项目依赖
mvn dependency:resolve
mvn dependency:tree
4)
Assembly插件
使用 Maven Exec 插件运行了 Simple Weather 应用程序。虽然 Maven Exec 能运行程序并且产生输出,你不能就把 Maven 当成是你程序运行的容器。 如果你把这个命令行程序分发给其他人,你大概就需要分发一个 JAR 或者一个 ZIP 存档文件或者 TAR 压缩过的 GZIP 文件。下面的小节介绍了使用 Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。
Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly 插件以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符。 后面的章节我们会说明如何创建一个自定义装配描述符,为 Simple Weather 应用程序生成一个更复杂的存档文件。 本章我们将会使用预定义的 jar-with-dependencies 格式。 要配置 Maven Assembly 插件, 我们需要在 pom.xml 中的 build 配置中添加如下的 plugin 配置。
Pom.xml配置如下:
<
build
>
<
plugins
>
<
plugin
>
<
artifactId
>maven-assembly-plugin<
/artifactId
>
<
configuration
>
<
descriptorRefs
>
<
descriptorRef
>jar-with-dependencies<
/descriptorRef
>
<
/descriptorRefs
>
<
/configuration
>
<
/plugin
>
<
/plugins
>
<
/build
>
mvn assembly:assembly
在 target/simple-weather-1.0-jar-with-dependencies.jar 装配好之后, 我们可以在命令行重新运行 Main 类。在你项目的基础目录下运行以下命令:
java -cp simple-weather-1.0-jar-with-dependencies.jar org.sonatype.mavenbook.weather.Main 10002
这样我的依赖包里的class文件也一起打进了这个包里了!