只有当你真正的将maven用起来的时候才会真正体会到maven的作用。
来,跟我做:

下载maven
我们可以到maven的官网上去下,鉴于我以及一些英语差的人在第一步就被卡死了,贴上链接。

解压maven
当我们下载好maven以后,进行解压。

设置环境变量
使cmd执行程序命令的可以查找到该命令文件的位置,具体设置环境变量的步骤自行百度,最后在path当中添加;%M2_HOME%\bin;

测试是否成功配置好maven
mvn -version

下面开始用maven干一些神奇的事情了

创建Java工程
以前我们创建Java工程都是使用eclipse来创建,现在我们可以使用maven来进行创建了(比如eclipse有个.classpath配置文件,当中就有lib包的路径,在我们用javac命令编译的时候也需要加上 -classpath 或者直接将用的jar包加入java安装目录的classpath当中让程序执行的时候能查找到,此时用maven这些都不用做了,maven可以帮我们做到)
创建hello_maven文件夹

  • hello_maven

    • src
    • target
    • pom.xml

其中target是执行mvn compile之后生成的,当中有java类的编译结果class文件。
mvn compile
因为是初次操作,将会下载maven的一些默认包到本地来,比如我们的pom文件,没有添加任何依赖,在执行的时候仍然下载了一些默认包。

<?xml version="1.0" encoding="utf-8"?>
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>zhihu.guowuxin.maven</groupId><artifactId>maven-01</artifactId><version>0.0.1-SNAPSHOT</version>
</project>

默认包的路径,包括junit包和一些其他配置,这个路径是可以改的在setting.xml当中

<?xml version="1.0" encoding="utf-8"?>
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>zhihu.guowuxin.maven</groupId><artifactId>maven-01</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies>
</project>
package zhihu.guowuxin.maven;import org.junit.*;
import static org.junit.Assert.*;public class TestHelloMaven
{@Testpublic void testSayHello(){final HelloMaven hm = new HelloMaven();final String str = hm.sayHello("maven");assetEquals(str,"hello:maven");}
}

运行mvn test就会自动下载包并进行测试

转载一篇答案

  1. 前言
    Maven是apache的一个顶级项目,它的出现越来越影响着现在的众多的开源项目,不仅如此,很多公司的很多新项目都采用Maven提倡的方式进行管理。Maven正逐渐侵入我们原先的管理项目的习惯,对于团队的管理,项目的构建,都是一种质的飞跃。当然是我个人的一些项目经验而说的这话。如果原先的团队老大本身的管理非常科学,也有一套其他软件辅助项目的构建、打包、发布等等一系列机制保证。那么Maven可能对其并没有实质性的影响或者是质的飞跃。当然在此也并不是说咱们中国人做出来的项目就管理不善……只是说利用Maven帮助我们构建项目更科学、更有可维护性、更加模块化、模块功能更加职能单一、做出来的项目更加具有可复用性等等好处。当然笔者也是个刚学习Maven的人,我们一起来学习Maven到底为我们带来了什么好处。笔者邮箱已经给出,欢迎与笔者进行学术上的交流。
  2. Maven的思想
    本来想看完了实战整本,再写总结的,后来觉得还是先写出来吧。哪怕有什么不对的地方再纠正都不晚,就怕到时候看完了一点心得都没有,全忘了就太……所以先将学习的点点滴滴感受写下来,之后结合实例咱们可以反复的推敲。
    目前笔者看到的Maven的主要功能是:项目构建;项目构建;项目依赖管理;软件项目持续集成;版本管理;项目的站点描述信息管理;
    由此可以看出Maven最主要的体现在了哪2个词?——对了,项目管理!加在一起就是项目管理。项目管理是一个很抽象的概念。项目管理既可以指技术上的管理手段,也可以指“以人为本”的非技术因素。诚然,无论是技术还是非技术,项目的成败最大的责任人其实就是项目经理。这里我们抛开人为因素不提,仅就技术上来说,Maven提供了一种思想让团队更科学的管理、构建项目。用配置文件的方式对项目的描述、名称、版本号、项目依赖等等信息进行描述。使之项目描述结构清晰,任何人接手的成本比较低。在项目构建时,利用Maven的“约定大于配置”的思想,可以比Ant脚本构建项目省去不少配置文件的内容。而且一个项目可能依赖于其他的项目和第三方的组件才能顺利完成,Maven提供了仓库的概念,让这些依赖项放进仓库中,项目想要从仓库中去取,其他项目组也需要,OK,从仓库中去取,不必每个人去开源项目的站点去苦苦搜寻了。如此人员的成本、软件维护的成本、沟通的成本、硬件的成本都降下来了。客户笑了、公司老板也笑了、项目经理笑了、团队里面的人员也笑了、Apache社区看到这么多人在用也笑了。给笔者的感觉,现在的开源东西越来越向“敏捷开发”、“极限编程”的方向靠拢。通过Maven辅助管理项目,更能发现项目中哪些模块是重复的轮子。
  3. Maven的环境搭建
    下面我们来看看Maven的环境搭建。首先从Apache网站下载Maven。下载url是:http://maven.apache.org/download.html。笔者下载的是Maven 3.0.3版本。下载下来的包结构如下:

    • bin就不用说了,就是Maven的一些命令参数
    • boot里面是Maven自己的类加载器,咱们也不必理会。
    • lib是Maven运行时需要的类库。

    将bin目录和JDK的bin目录一样设置为系统的PATH。这样在命令行就能直接运行Maven指令了。保持网络畅通,在命令行执行一条语句mvn help:system会从网上下载很多东西,本地用户的临时文件夹,会生成一个临时Maven文件目录,用于存储本地资源仓库。比如在C:\Users\liuyan下面有个文件夹叫做.m2。将刚刚提到的settings.xml拷贝到C:\Users\liuyan.m2下面,如此Maven就算在本机安装好了。

  4. Maven使用入门
    首先我们先写一个非常简单的小项目(我们姑且称之为项目啊),项目结构如下图所示

    • src.main.java是项目代码文件夹
    • src.test.java是项目单元测试文件夹

    下面我们看项目代码,一个简单的类com.liuyan.maven.helloword.HelloWorld

    package com.liuyan.maven.helloword;
    public class HelloWorld {public String sayHello() {
    return "hello maven";
    }
    /**
    * @param args
    */
    public static void main(String[] args) {
    System.out.println(new HelloWorld().sayHello());
    }
    }

    在此项目的根目录下有一个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.0http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.liuyan.maven</groupId>
    <artifactId>MavenDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </project>

    进入控制台,将当前目录cd到与pom.xml同级的文件夹下面。执行命令
    mvn clean compile
    因为笔者写总结前之前下载了相关包,所以此时相关输出download包的信息少一些
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building MavenDemo 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ MavenDemo ---
    [INFO] Deleting E:\Genuitec\ws\MavenDemo\target
    [INFO]
    [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ MavenDem
    o ---
    [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
    . build is platform dependent!
    [INFO] skip non existing resourceDirectory E:\Genuitec\ws\MavenDemo\src\main\res
    ources
    [INFO]
    [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenDemo ---
    [WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil
    d is platform dependent!
    [INFO] Compiling 1 source file to E:\Genuitec\ws\MavenDemo\target\classes
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.044s
    [INFO] Finished at: Sat May 28 16:23:07 CST 2011
    [INFO] Final Memory: 5M/15M
    [INFO] ------------------------------------------------------------------------

    执行后造成的结果。就是项目的根路径下出现了一个taget文件夹。里面就是编译后的class类。经理过来说,你需要进行单元测试才能发布出来给大家用。Ok,我们在源码包——src/test/java下面开始编写junit单元测试类。
    单元测试代码如下

    package com.liuyan.maven.helloword;
    import org.junit.Test;
    import org.junit.Assert;
    public class TestHelloWorld {@Test
    public void testSayHello() {
    HelloWorld helloWorld = new HelloWorld();
    Assert.assertEquals(helloWorld.sayHello(), "hello maven");
    }
    }

    之后我们因为使用了junit单元测试,那么就是说我们这个项目依赖了它。修改一下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.0http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.liuyan.maven</groupId>
    <artifactId>MavenDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.7</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    </project>

    进入命令行,执行命令mvn clean test
    执行后观察一下taget文件夹如下图,多出了test-classes文件夹和另外2个咱们暂时不用去管的文件夹。之后在观察一下本地的临时仓库C:\Users\liuyan.m2\repository,会多出文件夹junit,下载的版本是4.7。
    如果我们想把项目打成jar的形式输出出去呢?在项目根目录下执行
    mvn clean package
    执行后生成了一个jar包,至于SNAPSHOT是快照的意思,快照就是项目暂时还不稳定的意思。打包测试后没问题了,想把此项目当做Maven的本地资源仓库,为其他的项目也能提供服务,可以这么做,执行命令
    mvn clean install
    执行后本地的临时库文件多了你自己的这个项目。这样别的项目需要你这个项目提供服务的时候就可以从本地Mavne库中提取相应的jar了。

  5. 利用IDE构建POM.xml骨架
    现在的形式是这样,Maven虽然如火如荼,但是支持Maven的各种IDE插件确实还有很多不少的缺陷。正所谓名不正则言不顺,总给人感觉IDE不支持的开源项目都是“非主流”,呵呵,确实现在Maven在IDE中存在各种各样的问题,比如就刚才简单的命令在dos命令行就可以顺利执行,到了Myeclipse怎么就不行了呢。笔者在此仅仅使用IDE构建一下pom.xml文件,因为个人感觉利用IDE执行Maven命令其实意义不是很大,因为到了linux环境下还是需要手工执行Maven命令的。
    使用Myeclipse工具可以为开发者提供良好的可视化编辑POM.xml文件
  6. 总结
    这算是开张了,本次仅仅介绍了Maven的环境搭建和入门命令,还了解了一些Maven的思想。之后我们会结合书里面的小案例来一步步的学习Maven的特性。

作者:郭无心
链接:https://www.zhihu.com/question/20104186/answer/73797359
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

maven是干嘛的?相关推荐

  1. maven是干嘛的_maven项目是干嘛的

    项目管理软件 . maven和javaweb没有任何关系Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.Maven除了以程序构建能力为特色之外, ...

  2. 头条一面竟然问我Maven?

    头条一面竟然问我Maven? maven package和maven install 有什么区别? 你常用的maven命令有哪些? <dependencyManagement> 是干什么的 ...

  3. 编译maven_头条一面竟然问我Maven?

    头条一面竟然问我Maven? maven package和maven install 有什么区别? 你常用的maven命令有哪些? 是干什么的? 还有用过其它构建工具吗? 和maven有啥区别? 这几 ...

  4. Maven命令 install 和 package的区别

    Maven命令 install 和 package的区别 Maven是目前十分流行的项目构建工具以及依赖解决工具,其提供的常用指令中有两个很容易引起使用者的疑惑, 那就是 install 和 pack ...

  5. idea中为啥要用maven

    maven是啥?Maven是一个项目管理和综合工具.就是项目管理工具呀!那和svn  git有区别吗?是一样的呀!联想,在什么都不知道的情况下,瞎想. 了解下svn  git是项目代码的管理工具.对项 ...

  6. Maven基础(2):Maven详解

    目录 1.mvn deploy与mvn clean deploy区别 2.maven命令package.install.deploy的联系与区别 3. 命令参数 -D 4.maven详解 1.Mave ...

  7. Maven知识梳理及使用

    一.maven是干嘛的?有什么用?为什么要用它? 刚入职的时候,老员工给了一份文件,里面分别是java环境配置教程.java开发注意事项,再有一个就是eclipse创建maven项目教程. maven ...

  8. Maven实战与原理分析(一):maven超全使用指南总结

    maven package和maven install 有什么区别? 你常用的maven命令有哪些? <dependencyManagement> 是干什么的? 还有用过其它构建工具吗? ...

  9. 整理 | 编程技术学习资源汇总

    一.编程语言 1. JavaWeb开发 1.1 JavaSE Java学习 1.2 JavaEE 2. Android开发 3. Python开发 4. 前端开发 4.1 资料 前端导航 W3C sc ...

最新文章

  1. win7变成xp风格了怎么改回_揭秘:干掉了win7!为何win10屡被吐槽它却“永世留芳”?...
  2. Apache 启动提示undefined symbol: libiconv_open
  3. python元组类型_Python数据类型之元组
  4. oracle数据库月份日期固定,oracle 日期函数介绍-数据库专栏,ORACLE
  5. android 地址栏 隐藏,android webview隐藏地址栏
  6. [BalticOI2002]Bicriterial routing
  7. 10.Swoole 运行流程
  8. 给Debian浏览器安装flash播放插件
  9. opencv 修改 读取路径_opencv中读取图像的绝对路径问题
  10. 例3.6 二叉搜索树 - 九度教程第36题(二叉排序树)
  11. 第08章-使用Spring Web Flow
  12. Microsoft Visio2003 简体中文版 下载
  13. 南师大计算机系,清华大学2010计算机系本科录取名单(南京仅1人考上)
  14. MongoDB MongoVue 客户端
  15. 微信小程序的组件传值
  16. [自学考试] [02142数据结构导论] Part1 概论
  17. 使用JavaScript重定向到其他网页
  18. 禅说派-全图型PPT之图片处理技巧精粹
  19. 2022年最值得去的100家互联网大厂排名出来了
  20. 自动查券找券搜券返利机器人实现方法分享

热门文章

  1. vue3.0出现无法加载文件 C:\Users\zjm\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本的解决办法
  2. JSP的四大作用域及属性范围
  3. 子类调用父类 关键字 super
  4. python实时显示图片_任何显示来自Cam的实时图像的快速Python GUI
  5. 大学四年---一个快要毕业学生的反思
  6. 6.2 阈值处理-- 自适应阈值处理和 阈值Otsu处理
  7. 了解 ARM Coretex-A 系列芯片
  8. 软件质量评判标准:高内聚、低耦合
  9. 离线数仓搭建_15_ADS层数据构建
  10. YepEda Allegro Skill学习版