Maven笔记

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+模块名;

时间: 2024-10-15 01:51:23

Maven笔记的相关文章

框架Maven笔记系列 一 基础

主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://maven.apache.org/ 1.Maven解决了什么问题? Maven基于项目对象模型(POM),可以用一小段描述信息来管理项目的构建,报告和文档的软件.它是一个项目管理工具. 2.

Maven笔记(一)

1. 坐标 Maven坐标为各种构件引入了秩序,任何一个构件都有必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId, artifactId, version, packaging, classifier. 下面简单介绍一下这几个标签 1) groupId 定义当前Maven项目隶属的实际项目,当然跟实际项目之间并不是一对一的关系.其命名方式与Java包名的方式类似,通常与域名反向一一对应.例如org.sonatyp.nexus.在后面的聚合里面可以看到,同一项

maven笔记(3)

项目管理利器(Maven)——Pom.xml解析 <name>项目的描述名</name> <url>项目的地址</url> <description>项目描述</description> <developers>开发人员信息</developers> <licenses>许可证信息</licenses> <!-- 依赖列表 --><dependencies><

02 Maven 笔记:Eclipse下maven项目在Tomcat7和Jetty9中部署调试

现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可以部署在Jetty服务器上,以下是调试过程. 一.开发环境 Java: JDK7 Eclipse: Eclipse Java EE IDE for Web Developers ,Version:Luna Release (4.4.0) Maven: 3.2.5 Tomcat: 7 二. 配置Tom

Maven笔记(二)仓库

1.仓库布局 任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,这就是Maven的仓库布局方式 路径与坐标的对应关系为:groupId/artifactId/version/artifactId-version-classifier.packaging.其中groupId是以句点进行分割的. 例如jersey-common-2.22.1.jar,其POM定义如下(版本继承了父POM文件) <parent> <groupId>org.glassfish.je

maven 笔记:maven Could not create the Java Virtual Machine

1.安装好maven,在cmd中运行mvn –v,报错:"maven  Could not create the Java Virtual Machine" 2.分析:这是跟jvm有关,在cmd中运行 java –version,发现正常 3.继续分析:在安装maven的时候做了环境变量的配置: M2E_HOME : E:\liberary\maven Path : %M2E_HOME%\bin;(在Path变量末尾加上) MAVEN_OPTS: -Xms128m -Xmx512m 设

maven笔记-入门(helloWorld)

maven: pom.xml:文件 groupId,artifactId,Version定义了一个项目的基本坐标 groupId:定义了项目属于哪个组,往往与项目所在的组织和公司有关 artifactId:定义了当前maven在项目组中的唯一的ID Version:指定了当前项目版本,SNAPSHOT以为快照,说明该项目还处于开发中,是不稳定的 如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

maven笔记-将本地jar包打包进可执行jar中

参考资料:http://www.cnblogs.com/richard-jing/archive/2013/01/27/Maven_localjar.html 使用本地jar <dependencies> <dependency> <groupId>org.richard</groupId> <artifactId>my-jar</artifactId> <version>1.0</version> <s

Maven笔记 pom.xml配置详解

pom.xml文件配置详解 --声明规范 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quo