1:背景

  关于项目的搭建,有些人使用开发工具搭建项目,然后将项目所依赖第三方jar 复制到类路径下面,上述搭建方式没有第三方类库的依赖关系,在导入一个jar包的时候,这个jar包还可能依赖其他jar包,其他的jar包有依赖更多的jar包,所以有时候会经常碰见ClassNotFind错误。使用一些项目构建工具可以很好的避免这种问题。目前的项目构建工具主要有:Gradle、Ant、Maven等。项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

2:maven简介

  Apache maven是一个软件项目管理工具,基于项目对象模型POM(project object model),可用来管理项目的依赖、编译、文档等信息。使用maven构建项目的时候,项目依赖的jar包不包含在项目中,而是放置在用户目录下的.m2文件夹下面。

3:maven优点

  3.1 项目标准化 

  maven基于约定优于配置原则,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下。它的项目构建是高度自动化,跨平台,可重用的组件,标准化的。约定的目录结构可以更方便我们日后的操作:例如:mvn  test;mvn package

  3.2 文档和报告

  使用mvn site可以快速生成项目站点

  3.3 库管理

  只要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们管理jar包。maven会自动将依赖的类库下载到本地,并且下载的类库如果还依赖其他的类库,它也会自动下载过来。省去了我们下载的动作

  3.4 项目打包管理

   在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的Test Case,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。使用mvn install将编译和打包好的文件发布到本地仓库中。使用mvn deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository。 

4:前期准备工作

  确保已安装JDK,并 “JAVA_HOME” 变量已加入到 Windows 环境变量。

5:下载maven

  下载地址:http://maven.apache.org/download.cgi

  

下载后,存放在磁盘中进行解压,我这边解压到C盘:

6:设置maven环境变量

  设置系统环境变量:MAVEN_HOME或者M2_HOME,内容为maven解压的绝对路径。然后将将%MAVEN_HOME%\bin加入Path中,并用分号与其他值隔开;

7:验证maven是否安装成功

win+r输入cmd,进入命令行窗口,输入mvn  -v。显示如下结果说明成功。要是报错的话从三个方面,1:jdk安装版本和maven匹配程度,以及jdk环境变量的配置。2:maven环境变量的配置

8:maven的初步使用(编写一个HelloWorld)

8.1  maven的项目约定

  HelloWorld(项目根目录)
     |----src
     |     |----main
     |     |         |----java ——存放项目的.java文件
     |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
     |     |----test
     |     |         |----java ——存放所有测试.java文件,如JUnit测试类
     |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
     |----target ——项目输出位置
     |----pom.xml ----用于标识该项目是一个Maven项目

8.2 手动创建项目

  手动创建HelloWorld文件夹,然后按照目录结构依次创建目录;根目录下的pom.xml中

在D:\HelloWorld\src\main\java下面建立HelloWorld.java工程:

public class HelloWorld{
    public static void main(String[] args){
        System.out.print("Hello,World!");
    }
    
     public String sayHello(String name){
        return "Hello "+name+"!";
    } }

在D:\HelloWorld\src\test\java\TestHello目录下建立testHello.java,


//导入junit的包
import org.junit.Test;
import static junit.framework.Assert.*; public class HelloTest { @Test
public void testHello(){
Hello hello = new Hello();
String results = hello.sayHello("gacl");
assertEquals("Hello gacl!",results);
}
}
 

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">       <!--所有的Maven项目都必须配置这四个配置项-->
    <modelVersion>4.0.0</modelVersion>
    <!--groupId指的是项目名的项目组,默认就是包名-->
    <groupId>HelloWorld</groupId>
    <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
    <artifactId>Hello</artifactId>
    <!--version指的是版本,这里使用的是Maven的快照版本-->
    <version>SNAPSHOT-0.0.1</version>   <name>Hello</name>     <!--添加依赖的jar包-->
    <dependencies>
        <!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>     </dependencies>
</project>

8.3 使用Maven编译、清理、测试、打包项目

8.3.1 编译

然后进入项目根目录运行命令行  mvn compile 进行编译,   发现多了一个 target文件夹,发现里面有class文件夹,里面有编译后的字节码文件。执行"mvn compile",Maven会去中央仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库中存储,所以就可以直接拿来用了,这样就省去了去中央仓库下载jar包的时间。

8.3.2  用Maven清理项目,清理项目的命令是:"mvn clean"

进入Hello项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,

8.3.3 使用Maven测试项目,测试项目的命令是:"mvn test"

  进入Hello项目根目录执行"mvn test"命令测试项目,如下图所示:

8.3.4 使用Maven打包项目,打包项目的命令是:"mvn package"

 进入Hello项目根目录执行"mvn package"命令测试项目,如下图所示:

8.3.5  使用Maven部署项目,部署项目的命令是:"mvn install"

  进入Hello项目根目录执行"mvn install"命令测试项目,如下图所示

安装成功之后,首先会在hello项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件。除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个Hello-0.0.1-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中,如下图所示:

8.3.6 组合使用命令

maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:

  1、先清理再编译:"mvn clean compile",

  "mvn clean test","mvn clean package","mvn clean install"

  这些命令自行实践。

8.3.7 在别的项目中使用之前打的包

在pom.xml添加该包的依赖,然后就可以引用其中的方法。

<!--项目要使用到Hello的jar包,所以在这里添加Hello的jar包的依赖-->
<dependency>
<groupId>HelloWorld</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

8.4 自动创建项目

  从maven模板创建一个java项目

  1、使用mvn archetype:generate命令,如下所示:这告诉 Maven 来从 maven-archetype-quickstart 模板创建 Java 项目。如果忽视 archetypeArtifactId 选项,一个巨大的 Maven 模板列表将列出。这个依据个人网络,执行时间可能比较久,我的是两分多钟。

mvn archetype:generate -DgroupId={project -pockage 项目包名} -DartifactId={project -name 项目名称} -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

构建好的Java项目的目录结构如下:Maven帮我们创建的项目是一个标准的Maven项目,不过目前Maven只是帮我们生成了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如存放log4j.properties等)和src/test/resources(存放测试时用到的配置文件),后面可以将创建好的工程导入进eclipse里面进行开发。

参考文章:

http://www.cnblogs.com/AlanLee

http://www.cnblogs.com/xdp-gacl/tag/Maven学习总结/

http://www.yiibai.com/maven/

maven学习(1)下载和安装和初步使用(手动构建项目和自动构建项目)的更多相关文章

  1. JetBrains PyCharm(Professional版本)的下载、安装和初步使用

    不多说,直接上干货! 首先谈及这款软件,博主我用的理由:搞机器学习和深度学习! 想学习Python的同学们,在这里隆重介绍一款 Python 的开发工具 pyCharm IDE.这是我最喜欢的 Pyt ...

  2. VMware下OSSIM 4.1.0的下载、安装和初步使用(图文详解)

    不多说,直接上干货! 为什么,我写了一篇OSSIM 5.2.0的,还要再来写OSSIM 4.1.0呢,是因为,OSSIM 5.2.0所需内存较大,8G甚至16G,但是,肯定性能和里面集成组件越高级.也 ...

  3. kettle的下载、安装和初步使用(Ubuntu 16.04平台下)(图文详解)

    不多说,直接上干货! 能够看我这篇博客的博友们,想必是已经具备一定基础了. 扩展博客 kettle的下载.安装和初步使用(windows平台下)(图文详解) kettle的下载 žKettle可以在h ...

  4. DevExpress学习01——下载与安装

    记得刚接触编程时,虽然实现了功能,但用户界面十分丑陋,老师叫我们美化一下界面,不要千篇一律,当时觉得能够写出来功能就洋洋得意了,不觉得界面丑陋.后来,在程序比赛中,我接触了一种第三方控件,它可以快速实 ...

  5. Kettle学习系列之kettle的下载、安装和初步使用(windows平台下)(图文详解)

    不多说,直接上干货! kettle的下载 žKettle可以在http://kettle.pentaho.org/网站下载                   http://sourceforge.n ...

  6. Maven学习笔记(1)之安装Maven

    此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...

  7. Maven学习(一) -- 安装Maven及Eclipse中配置Maven

    标签(空格分隔): 学习笔记 本文环境:Windows7, JDK1.7.0_76 安装及配置Maven环境变量 需要电脑中已经有Java环境 在控制台中输入:echo %JAVA_HOME%看是否能 ...

  8. Maven学习(一)安装 配置

    安装环境 windowXP 32 下载地址 http://maven.apache.org/download.cgi 安装包 apache-maven-3.2.3.zip 一.安装 Step1 解压缩 ...

  9. kettle的下载、安装和初步使用(windows平台下)(图文详解)

    kettle的下载 žKettle可以在http://kettle.pentaho.org/网站下载                   http://sourceforge.net/projects ...

随机推荐

  1. aspnetcore 刷新Session Id总是改变

    public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...

  2. python 3.5学习笔记(第五章)

    本章内容 1.什么是模块 2.模块的导入方法 3.搜索路径 4.重要标准库 一.什么是模块 1.模块本质上是一个以.py 结尾的python文件,包含了python对象定义和python语句. 2.模 ...

  3. Excel催化剂开源第12波-VSTO开发遍历功能区所有菜单按钮及自定义函数清单

    在插件开发过程中,随着功能越来越多,用户找寻功能入口将变得越来越困难,在Excel催化剂 ,将采用遍历所有功能的方式,让用户可以轻松使用简单的查找功能找到想要功能所在位置,查找的范围有:功能按钮的显示 ...

  4. echarts在react项目中的使用

    数据可视化在前端开发中经常会遇到,万恶的图表,有时候总是就差一点,可是怎么也搞不定. 别慌,咱们一起来研究. 引入我就不多说了 npm install echarts 对于基础的可视化组件,我一般采用 ...

  5. C# MATLAB混编(一)

    参照这篇博客进行的C# MATLAB混编学习,学习过程中文章中的一些问题我并没有遇到,但是我遇到了一些新问题,这些问题的解决办法将在下一篇博客给出. 配置环境:vs2010(64位)+Matlab20 ...

  6. HttpWebRequest的使用之Get和Post的差别(C#)

    这两天做的是通过一个HttpWebRequest将采集地址发送到服务端,服务端会返回一个JSON格式的字符串,然后我这边再对这个JSON进行反序列化,得到我想要的数据.在这篇文章里我简单介绍一下Htt ...

  7. Kotlin学习快速入门(1)——基本数据类型以及String常用方法使用

    本文适合有Java基础的人 Kotlin语法特点 相比java,省略括号,可以自动判断类型,省略new关键字,空指针捕获 主函数 kotlin文件(kt文件)中,只有要下列的方法,就可以运行,无需像之 ...

  8. Linux/UNIX编程:使用C语言实现简单的 ls 命令

    刚好把 Linux/UNIX 编程中的文件和IO部分学完了,就想编写个 ls 命令练习一下,本以为很简单,调用个 stat 就完事了,没想到前前后后弄了七八个小时,90%的时间都用在格式化(像 ls ...

  9. HTTP 400 Bad request 原因

    我在使用httpclient 发送http请求时遇到问题,请求报 400 Bad request.网上都在说下面这两个原因 400 是 HTTP 的状态码,主要有两种形式: 1.bad request ...

  10. Python秒算24点,行还是不行?

    周末闲来无事,看到隔壁家的老王在和隔壁家的媳妇玩24点,就进屋看了看.发现老王是真不行啊,那不行,这也不行. 就连个24点都玩不过他媳妇,给他媳妇气的,啥都不能满足,这不能,那也不能. 我坐下来和他媳 ...