Maven是什么,作用是什么?

  Maven是项目管理工具,主要有两大作用:项目构建和依赖管理。项目构建就是项目编译、测试、集成发布实现自动化,依赖管理是很方便的功能,只要把当前项目所依赖的构件(jar、war等)写到pom配置文件中,就可以从仓库中自动导入对应的构件及构件依赖的其他构件,不同的maven项目共享一个构件仓库,项目引用仓库中的构建,避免重复下载。

  Maven如何安装?

  第一步 安装JDK,JDK的安装与环境变量的配置,在maven项目构建的过程中需要编译和运行,也就需要javac.exe和java.exe。

  第二步 从maven.apache.org下载maven的.zip包(Linux系统下载.tar.gz),解压到想要放置的目录下,配置环境变量MAVEN_HOME和PATH,MAVEN_HOME为maven的根目录,PATH添加%MAVEN_HOME%\bin,配置完成,在cmd中测试mvn命令是否有效 mvn -version。(如果重启之后mvn命令无效,直接用MAVEN_HOME的路径替换PATH中的路径,删除MAVEN_HOME)

  Maven如何使用?

  Maven集成在IDE环境中就不多说了,讲解用手动的方式创建项目到执行mvn命令完成构建。

  第一步 创建项目 在指定位置创建文件夹命令为项目名称,在文件夹内创建文件pom.xml,在pom.xml中添加如下内容:

  project p= = 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

  4.0.0

  com.helloworld

  helloworld-first

  0.0.1-SNAPSHOT

  Maven Hello World Project

  groupId、artifactId、version为项目的基本坐标,项目构建完成作为其他项目的依赖构建,就是通过坐标定位,所以maven要求所有项目都应该有坐标。groupId格式为倒过来的域名,以总项目名结尾,artifactId格式推荐为总项目名-模块名,方便在文件系统中对同一项目不同模块的构件归类,version为当前项目的版本号,版本号后缀为snapshot表示不稳定版,name为项目名称。构件的名称组成为artifactId-version.package

  第二步 编写主代码 Maven规定主代码在src/main/java/下,Maven也会在该路径下查找主代码,在项目根目录下依次创建src/main/java文件夹,在java文件夹下依次创建包com.helloworld.first,在first下创建First.java。编写主代码如下:

  package com.helloworld.first;public class First{ public String sayHello(){ return Hello Maven!;

  } public static void main(String[] args){

  System.out.println( new First().sayHello());

  }

  }

  第三步 编译运行:

  mvn clean compile 清理/target并编译

  mvn exec:java -Dexec.mainClass=com.helloworld.first.First 无参运行

  mvn exec:java -Dexec.mainClass=com.vineetmanohar.module.Main -Dexec.args=arg0 arg1 arg2 有参运行(此处不需要)

  第四步 编写测试代码 打包时不会打包测试代码,仅测试程序是否正确。

  先在pom.xml中添加JUnit标准单元测试依赖:

  project p= = 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

  4.0.0

  com.helloworld

  helloworld-first

  0.0.1-SNAPSHOT

  Maven Hello World Project

  

  

  junit

  junit

  4.7

  test

  

  

  dependencies标签下添加依赖构件,groupId、artifactId、version基本坐标确定某个依赖包,scope是依赖范围,默认是compile,也就是编译、测试都会依赖该包,scope是test,只有测试会依赖该包。

  Maven默认在src/test/java下查找test代码,在java下创建包com.helloworld.first,first文件夹下创建FirstTest.java,添加如下代码:

  package com.helloworld.first;import static org.junit.Assert.assertEquals;import org.junit.Test;public class FirstTest{ @Test

  public void testSayHello(){

  String result = new First().sayHello();

  assertEquals(Hello Maven!,result);

  }

  }

  第五步 单元测试

  mvn test

  以上手动建立的文件夹就是项目骨架,当然可以用Maven自带的项目骨架,命令mvn archetype:generate,根据提示选择骨架并创建项目。如果必要也可以自己写archetype。

  Maven项目构建命令有哪些?

  mvn clean 清理/target(就是编译或打包之后的文件夹)

  mvn compile 编译

  mvn test 单元测试(执行编译、测试)

  mvn package 打包(执行编译、测试、打包)

  mvn install 发布到仓库(执行编译、测试、打包、发布)

  如何查找构件版本?

  查找中心仓库构建 https://search.maven.org/,输入artifactId名称可以搜索到相关公司的项目及版本。

  Maven仓库是什么?

  Maven仓库分为远程仓库、私服、本地仓库,中央仓库是maven默认的远程仓库,私服是在局域网内搭建的仓库,减少带宽的占用。镜像与对应的远程仓库构建一致,但是有些可以加快下载速度。本地仓库默认在~/.m2/repo下,关于仓库和镜像的配置可以在settings.xml中找到,也可以在settings.xml中修改本地仓库的存储位置。

  Maven的pom.xml和settings.xml有什么作用?

  pom.xml是当前项目的配置,在项目的根目录下,主要配置项目的坐标(groupId、artifactId、version等),依赖构建(dependencies)等。

  settings.xml是Maven的配置,分为全局的和用户的,全局的settings位于maven/conf/下,用户的settings是复制全局的settings到~/.m2/下,用户的settings优先配置,一般不建议修改全局的settings,有利于项目升级不用再修改settings。

  settings中可以配置代理、远程仓库、镜像、本地仓库位置等。

项目管理工具:Maven的更多相关文章

  1. ③---Java项目管理工具MAVEN安装与配置

    Java项目管理工具MAVEN安装配置以下将为大家介绍Java项目管理工具MAVEN安装及其配置. 一.下载MAVEN安装文件 maven下载地址:https://maven.apache.org/d ...

  2. 向西项目管理工具Maven一片

    前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...

  3. 关于项目管理工具 maven

    众所周知,maven是目前很常用的项目管理工具.一般情况下,通过在pom.xml添加相应内容,再maven-->update就会自动把相应的jar包下载.配置好,非常方便. 一般每新建一个wor ...

  4. idea集成项目管理工具 --- Maven 并且【配置tomcat】

    介绍: 1.项目管理工具 POM    Porject Object Model 2.可以管理项目中的的jar包依赖 3.maven   jar包中央仓库:http://mvnrepository.c ...

  5. 《从零开始搭建游戏服务器》项目管理工具Maven

    简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架. Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在 ...

  6. java项目管理工具maven使用初级

    一.前言        早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基础 ...

  7. 项目管理工具Maven的安装与使用

    一.Maven的简介 1. 什么是maven 是Apache下的一个开源的项目,是纯java编写,并且只是用来管理java项目. 2. Maven的好处 maven项目管理jar节省磁盘空间 一键构建 ...

  8. Java 项目管理工具 - Maven

    类似于 PHP 中的 Composer,NodeJS 中的 npm,Java 用 Maven 来管理依赖关系. 实际上,Maven 负责管理 Java 项目开发过程中的几乎所有的东西: 版本控制:Ma ...

  9. 项目管理工具Maven的安装

    首先下载maven http://maven.apache.org/download.cgi 然后解压到不含中文和空格的目录,我直接解压到了D盘 然后添加环境变量: MAVEN_HOME:D:\apa ...

  10. 项目管理工具- Maven

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3. ...

随机推荐

  1. 010-Shell 输入/输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默 ...

  2. java的TimeUtils或者DateUtils的编写心得

    一.几种常见的日期和时间类介绍 介绍时间工具类不可避免必须要去触碰几个常见的日期和时间类,所以就简单介绍一下. 1.jdk1.8之前的日期时间类 a.Date类 我们可以通过new的方式生成一个Dat ...

  3. $digest / $apply digest in progress报错

    有的时候出于某种原因,如jq操作了model.或者$watch.setTimeout等函数改变了model,导致最后没有脏数据检测.所以我没就手动调用了$apply( )等.但是第一次运行的时候ang ...

  4. split_lzo_lib.sh

    split_lzo_lib.sh #!/bin/sh#输入文件名filename=$1#分割文件大小filesize=4096#输出库文件名libname="lib"$(echo ...

  5. cocosBuider 控件命名的坑

    这几天遇到了各种坑.... 各种控件名字问题.... bool CLevelLayer::onAssignCCBMemberVariable(cocos2d::CCObject * pTarget, ...

  6. java中的重量级与轻量级概念

    首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的. 比方说EJB就是一个重量级的框架,因为它对所编写的代码有限制,同时它也提供分布式等复杂的功能. 相比之下 ...

  7. Java Hashtable详细介绍和使用示例

    ①对Hashtable有个整体认识 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射.Hashtable 继承于Dictionary,实现了Ma ...

  8. cgwin的ssh错误解决办法

    参考博客    http://hi.baidu.com/luckygirl/item/bd00a6d8a05c310d20e25039 方法一(推荐): 修改/etc/passwd文件,在其中加入 s ...

  9. Windows下编译live555源码

    Windos下编译live555源码 环境 Win7 64位 + VS2012 步骤 1)源码下载并解压 在官网上下载最新live555源码,并对其进行解压. 2)VS下建立工程项目 新建Win32项 ...

  10. 老话题之C#写邮件发送

    唉!近来特么QQ邮件也犯二,突然间以前写的代码邮件发不出去,各种报错,无奈之下,换成了@163.com,可是报错依然,该开通(POP3/SMTP/IMAP)的都开通了!我勒了个草,像是在玩哥一样,还好 ...