本文主要介绍的是maven的开发教程 1.接受maven的安装 目录结构 以及setting.xml 全局配置文件的社设置(重要) 后续会介绍Eclipse 整合maven的开发
下面直入正题
-
maven的介绍
-
maven的安装配置
-
创建maven工程
概述:简单的讲基于maven 的开发有很多好处 多团队的开发过程中 开发环境必须要统一 基于这种需求所以项目的开发环境的配置就自然而然的配置在maven的工程中 而且如果本地环境不能满足maven的配置需求 则maven的强大功能 则会从网络上下载环境资源 而且开发过程中我们可以把我们的项目打包 安装到本地仓库 然后让别的工程依赖 这样的高敏捷度 也是分能够体现Maven 的有益的设计思想。。下面的我们将开始入门级的教程开发
什么是项目的构建
所谓的构建就是项目从零开始直至开发完成部署到生产环境的过程
常见项目的构建方式
-
Eclipse
使用eclipse进行项目构建,相对来说,步骤比较零散,不好操作
-
Ant
它是一个专门的项目构建工具,它可以通过一些配置来完成项目构建,这些配置要明确的告诉ant,源码包在哪?目标class文件应该存放在哪?资源文件应该在哪
-
gradle (android studio)as开发的构建方式
-
Maven
它是一个项目管理工具,他也是一个项目构建工具,通过使用maven,可以对项目进行快速简单的构建,它不需要告诉maven很多信息,但是需要安装maven去的规范去进行代码的开发。也就是说maven是有约束。
首先下载maven 官网下载即可 我这用的是3.0版本的其他的大同小异 现在最新的开发工具也会自动整合maven最新插件 所以没有必要研究高版本
1,2解压即安装
3.配置maven的环境变量MAVEN_HOME PATH中添加maven的bin目录
4:测试maven是否安装成功,在系统命令行中执行命令:mvn –v 显示maven 的版本
1.1 配置maven
在maven中有两个配置文件:用户配置、全局配置(默认)
1.1.1 全局配置
在maven安装目录的conf里面有一个settings.xml文件,这个文件就是maven的全局配置文件。
该文件中配置来maven本地仓库的地址
默认在系统的用户目录下的m2/repository中,该目录是本地仓库的目录。
1.1.1 用户配置
用户配置文件的地址:~/.m2/settings.xml,该文件默认是没有,需要将全局配置文件拷贝一份到该目录下。
重新指定本地仓库地址,如果不指定,则默认是~/.m2/repository目录,如果用户配置文件不存在,则使用全局配置文件的配置。
在setting.xml 文件中在指定自己的 仓库地址<localReposity>用户仓库的目录</localRepositry> 该目录就是指定的maven工具在构建工程时候依赖的进行下载的目录 它是以坐标的方式进行安放的 我经常称之为GAV 后面会详细介绍坐标的概念
Project
|--src(源码包)
| --main(正常的源码包)
| --java(.java文件的目录)
| --resources(资源文件的目录)
| --test(测试的源码包)
| --java
| --resources
|--target(class文件、报告等信息存储的地方)
|--pom.xml(maven工程的描述文件)
我们创建的maven的工程基本上就是这个目录
下面是pom文件的介绍
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kidcools.maven</groupId>
<artifactId>MavenSecond</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 配置是有使用tomcat7 运行项目 -->
<plugin>
<!-- 配置插件 -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 端口随意 -->
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
<groupId>com.kidcools.maven</groupId>
<artifactId>MavenSecond</artifactId>
<version>0.0.1-SNAPSHOT</version>
这就是我所称的GAV maven 的设计思想就是通过这三个因素定义一个唯一的依赖的库
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
这样就会指顶该工程依赖junit 4.9 项目真正编译的时候maven 会先从把本地仓库查找 没有的话在不考虑私服的情况下 会向maven的官方的公共服务器下载 相关的 依赖 并保存到本地仓库中 相当于一个本地缓存
在src main下创建代码
package com.kidcools.maven;
public class MavenFirst {
public String helloMaven(){
return "helloMaven";
}
}
在src test下创建代码
package com.kidcools.maven;
import org.junit.Test;
import junit.framework.Assert;
public class TestMavenFirst {
@Test
public void testHelloMaven(){
MavenFirst first = new MavenFirst();
String str = first.helloMaven();
Assert.assertEquals("helloMaven", str);
}
}
下一步就是 关键了 就是如何使用maven构建该工程 并且执行测试
1。cmd 到跳转工程所在的根目录下 执行mvn -compile 命令 maven就会自动编译构建该项目 并且将生成的class 文件 一级其他的资源文件 防盗target目录下
再联网情况下 并且 首次执行令 maven会从网上下载命令需要的相关jar
成功后 console 会显示
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenFirst 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenFirst ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenFirst ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.540s
[INFO] Finished at: Wed Mar 08 10:48:49 CST 2017
[INFO] Final Memory: 7M/182M
[INFO] ------------------------------------------------------------------------
然后执行的mvn test命令 也就是将该工程下test目录下的测试文件进行测试
以上所需要的命令 下篇我会详细解释
至此 一个简单的maven工程创建完毕 不为别的就是让想了解maven的初学者有一个感性的认识 下篇我会介绍maven的一些常见的命令 和eclipse整合的方式以及配置 以及依赖 继承 坐标一些核心的概念和思想 最后会为大家创建一个聚合工程 演示Maven工程创建的优异性。