码迷,mamicode.com
首页 > 其他好文 > 详细

Maven笔记

时间:2016-04-25 00:57:51      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

1、安装与配置

1.1  jdk环境

      Maven依赖于jdk,需要配置JAVA_HOME环境变量。

1.2  maven环境

      Maven解压后不需要安装,只需要配置环境变量

      最好配置M2_HOME以及MAVEN_HOME,因为有些项目会引用不同的环境变量。

      M2_HOME,MAVEN_HOME:D:\Program Files\apache-maven-3.3.9;

      PATH: %M2_HOME%\bin;

      测试:打开cmd,输入:mvn –v;

2、本地资源库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。

默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:

Windows – C:\Documents and Settings\{your-username}\.m2

2.1 更新本地资源库

通常情况下,可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo

找到 {M2_HOME}\conf\setting.xml, 添加localRepository

  <!-- localRepository

   | The path to the local repository maven will use to store artifacts.

   |

   | Default: ${user.home}/.m2/repository

  <localRepository>/path/to/local/repo</localRepository>

  -->

  <localRepository>d:/maven-repo</localRepository>

2.2 测试资源库

新建工作空间:D:/MavenWorkspace

CMD: mvn archetype:generate -DgroupId=com.test -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=internal

注意,以下均以myapp项目为例。另外,DarchetypeCatalog=internal这个参数表示从本地查找catalog配置文件,否则会从远程官网查找,然后你就等吧。。。。。。

结果:

 技术分享

 

3、中央存储库

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – https://repo.maven.apache.org/maven2/查找下载。

3.1 默认中央存储库

      为了测试默认中央存储库,先把本地资源存储库清空,以及myapp项目删掉,然后cmd进入工作空间,输入2.2的构建命令。

 技术分享

由于本地资源库并没有构建项目所需的必备依赖,所以会去中央存储库下载,可以看出默认存储库为:https://repo.maven.apache.org/maven2/

下的太慢,不喜欢!怎么办?换成国内镜像。

3.2 中央存储库国内镜像配置

打开配置文件,2.1那个setting文件。找到mirrors

 技术分享

我已经添加了国内镜像。

同样,再次清空本地资源库,以及myapp,再次进入工作空间,输入构建命令。

 技术分享

我们可以看到,已经从国内镜像开始Downloading…

国内镜像地址: http://maven.oschina.net/content/groups/public/

而且速度极快,与前者不可同日而语,我们要感谢谁呢?

3.3 远程仓库

默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。

远程仓库需要配置在pom.xml文件中,如下:

 技术分享

4、依赖机制

假如我们要在项目中使用junit进行单元测试,我们怎么达到这个目的?下面分两种情况说明。

4.1 传统方式

(1)下载 junit的 jar 库

(2)复制 jar 到项目类路径

(3)手动将其包含到项目的依赖

(4)所有的管理需要一切由自己做

如果有junit版本升级,则需要重复上述步骤一次。这还是简单的,我们都用过ssh,都知道一个一个jar包给我们添了多少麻烦!

4.2 maven方式

(1)   maven坐标

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

GroupID是项目组织唯一的标识符,实际对应Java的包的结构,是main目录里java的目录结构。

ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

它会自动下载junit的4.12 版本库。如果“version”标签被忽略,它会自动升级库时当有新的版本时。

(2声明 Maven 的坐标转换成 pom.xml 文件

 技术分享

当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库。

看起来所有的活都让maven做了,我们只需要配置maven坐标即可!

(3)maven坐标哪里来

当然去http://mvnrepository.com/,这里尽情的搜索吧!

 技术分享

5、项目文档

进入myapp,执行cmd命令:mvn  site;

 技术分享

打开看看吧!

 技术分享

6、项目模板

我们构建myapp用的命令:mvn archetype:generate,其中archetype就是原型的意思,archetype是一个maven的插件,它的作用就是按照模板为我们创建项目结构。

我们来一步一步在cmd中进行操作:

(1)mvn archetype:generate -DarchetypeCatalog=internal

 技术分享

这里我们啥也不输入,直接回车,默认会我们选择7: maven-archetype-quickstart-1.1.jar

(2)几个输入

 技术分享

输入y,回车。

(3)结果

 技术分享

构建成功,来看下pom文件

 技术分享

可以跟我们构建过程中的输入进行比较下看看!

现在我们来看看如何生成一个web应用。

输入命令:mvn archetype:generate -DgroupId=com.test -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal

注意以上命令与 2.2中命令的区别。

 

7、构建项目

7.1 mvn package

Maven是分阶段运行,执行package阶段的时候,所有阶段 validate, compile和 test, 包括目前的阶段package将被执行。

它会编译源代码,运行单元测试,打包取决于在pom.xml文件的packaging标签,jar或者war.

注:执行该命令,需要进入到pom.xml的目录中。

7.2 mvn clean

清理项目,一般在package之前进行清理,该命令会把target目录 清理掉,保证package到最新的代码。

7.3 mvn install

该命令会将你的程序打包到本地资源库中

 技术分享

当然也包括了package的功能

7.4 mvn eclipse:eclipse

     Generate的maven项目,eclipse并不能用,怎么办?

  执行该命令,就可以了。

  为了保证eclipse正常使用我们配置的maven,需要如下进行设置

 技术分享

然后,右键项目-maven-update project即可!

7.5 elipse中的两个问题

在elipse打开项目,会发现两个不满意的地方

 技术分享

Jdk1.5,不满意!

 技术分享

意思是说你这程序是用的elipse默认的GBK编码,是ide自己的,maven感觉不靠谱,给你个提醒。

如果按传统方式,要去修改首选项一大堆东西,特别是jdk1.5修改成1.7更麻烦。现在我们有maven了,简单至极!

 技术分享

Update一下,再看看!

 技术分享

项目根上的黄色三角叹号都消失了,而且jdk变成了1.7!再次感谢伟大的apache!

8、maven单元测试

8.1 准备

先建个两个src目录。

(1)test目录,注意是src/test/java,而非src/main/test

默认包含的测试类:
**/*Test.java
**/Test*.java
**/*TestCase.java
默认排除的测试类:
**/Abstract*Test.java

**/Abstract*TestCase.java

 

(2)java目录

 

明明没有啊!

打开project explorer, build path

 

Missing!!!!!!

解决办法,去main目录下手工建立一个java目录,F5一下!

 

Package视图里面java目录竟然跑下面去了。。。。对eclipse  mars2表示差评!

8.2 单元测试配置

 技术分享

Include **/*Test.java, 将会改变默认设置,所有包下面的*Test.java都会被当作测试进行测试。

Exclude **/TestPerson.java,将会将TestPerson.java排除,不再对其测试,即使其在src/test/java目录下。

注意:若要使用该方法需要配置testSourceDirectory

 技术分享

不推荐这么用,会让整个程序变得不可控制,结构混乱。

8.3 测试命令

(1)mvn test  根据配置测试所有;

(2mvn -Dtest=com.test.junittest.TestPerson test  只测某一个

8.4 特别说明

(1)scope

由于scope=test,maven不会下载junit jar包。会测试失败。

(2)测试报告路径和跳过测试

 reportsDirectory=D:/reports

 skipTests=true会跳过测试。

(5)每个模块在src/test/java目录下建立一个测试包,规则:com.test+模块名;

Maven笔记

标签:

原文地址:http://www.cnblogs.com/sdnu/p/5429022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!