1.什么是Maven

Apache Maven 是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。

Maven工程结构和内容被定义在一个 xml 文件中——pom.xml,是 Project Object Model (POM) 的简称,此文件是整个 Maven 系统的基础组件。

2.为什么要用Maven

当我们创建一个Maven项目后,就不需要再自己去导入各种jar包了,将要导入的jar包依赖信息配置在pom.xml中,Maven项目会根据具体的配置自动地在编译、测试和运行的时候,从本地仓库中导入相应的各种依赖。

这样做有两个最大的好处,一个是项目的依赖被统一管理,不容易出现依赖冲突(比如说jar包引入的版本冲突);另一个就是项目的体积变小了,毕竟一个稍微大些的项目光是引入的jar包就占了相当多的体积,而Maven项目只需要一个pom.xml文件就搞定了

约定优于配置

Maven 使用约定而不是配置,开发者不需要再关心每一个配置细节。当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,并在 pom.xml 中添加项目相关的依赖。

Maven项目规定了源码文件、资源文件、测试文件、输出文件等的默认配置,简单的说就是把这些文件规定放在对应的路径下方便管理,如下表所示,假设${basedir}表示工程目录:

项目工程的路径 存放的文件类型
${basedir}/src/main/java 项目源码
${basedir}/src/main/resources 资源文件,比如.properties文件
${basedir}/src/test/java 测试用的源码
${basedir}/src/test/resources 测试用的资源文件
${basedir}/target/classes 编译后的文件
${basedir}/target/test-classes 编译后用于测试的文件

如果是用Eclipse的Maven插件生成的Maven项目,只会自动生成src/main/resourcestarget/classestarget/test-classes,需要自己手动添加其它的目录,并且指定项目的source以及编译后的输出目录

3.Maven的安装与设置环境变量

想要创建一个Maven项目需要先安装Maven,并且设置好环境变量

  • Maven下载
  • 设置环境变量
    • 新建变量MAVEN_HOME,值为Maven的目录X:\XXX\apache-maven-XXX
    • %MAVEN_HOME%\bin添加到Path变量下
  • 运行CMD,输入mvn -v后可以看到Maven的版本信息等则表示安装成功

4.创建Maven项目和依赖

4.1创建Maven项目有两种方式,如下

第一种创建方式:使用命令行手动创建

mvn archetype:generate -DgroupId=com.lewis.seckill -DartifactId=seckill -Dpackage=com.lewis.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp

命令行执行后会创建一个maven-archetype-webapp骨架的Maven项目,其中groupId是项目组织唯一的标识符,实际对应JAVA的包的结构;artifactId是项目的唯一的标识符,实际对应项目的名称;package一般是groupId+artifactId,是自动生成的,可以修改

第二种创建方式:借助IDE工具的Maven插件来创建项目

笔者用的是Eclipse,所以这里只介绍Eclipse怎么用插件生成一个Maven项目

Eclipse安装Maven插件

  • 不知道怎么Maven插件的请参考该博文,推荐使用 link 方式手工安装的方式

    • 如果是手工安装Maven插件的,可能会缺少pom.xml 图形化编辑工具,请另外添加进去,具体情况请参考该博文
    • 已经安装了Maven插件的请走下一个步骤
  • FileNewOther...Maven ProjectNext,进入如下界面

  • 点击Next,选择要构建的骨架maven-archetype-webapp,如下图

  • 点击Next,填写groupId=com.lewis.seckillDartifactId=seckillpackage=com.lewis.seckill(根据实际情况填写),然后Finish

将Maven项目转变为Eclipse支持的Web项目

此时构建好的只是一个Maven项目,需要将其转变为Eclipse支持的Web项目,这样才能够直接在Eclipse中部署到Tomcat上进行调试。具体情况请参考该博文

4.2修改pom.xml文件

当创建完Maven项目后会在根目录下有一个pom.xml文件,Maven项目通过pom.xml进行项目依赖的管理,如果没有该xml文件,Eclipse不会将该项目当作一个Maven项目

添加项目需要的jar包依赖

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lewis</groupId>
<artifactId>seckill</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>seckill Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

在这个pom.xml里,会自动添加了Junit的依赖,不过有可能是3.X版本的,我们将其版本改为4.11的,因为旧版本的Junit不支持注解测试。

项目需要什么依赖,我们就到该文件下添加相对应的配置信息,比如我们要使用MySQL,就这pom.xml文件的dependencies标签里引入如下配置

        <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>

每次更新完pom.xml文件并保存后,Maven 项目会自动检测下载新的依赖。这里的groupId+artifactId唯一定位了依赖仓库里的MySQL的驱动jar包,version 表示其版本,scope 表示该依赖的范围。在Maven项目中,编译、测试和 运行使用的是不同的classpath,runtime表示该项目在编译时不导入该依赖,而在测试和运行项目时则导入。

那么如何查找jar包坐标和版本信息呢?请参考该博文

更新依赖时可能存在的问题

由于Maven默认会前往中央仓库下载依赖,下载的速度可能会非常慢,甚至连接不上,一般我们会设置成阿里云的镜像,下载速度会快很多,具体操作请参考该博文

在Eclipse上运行Maven命令

在安装了Maven插件之后,已经不需要用cmd来输入命令,可以直接在Eclipse中直接输入指令。在cmd中每个命令都要加上mvn前缀,而在Eclipse中则不需要,一般常用的指令有clean、compile、install、package等,一般都会在执行命令前先执行clean清除编译后的文件

右键点击Maven项目,执行run as里的命令,也可以自己输入其他的命令,具体操作请参考该博文

执行Maven命令可能发生的问题

如果是第一次在Eclipse上创建Maven项目,可能会存在输入Maven命令,Eclipse的控制台却毫无反应的情况,这是因为没有传参数,具体情况请参考该博文

到这一步,我们的Maven项目就已经初步建立成功了,接下来只需要安装规定在src/main/java下放置源码,在src/main/resources下放置资源文件就行了

eclipse中创建一个maven项目的更多相关文章

  1. 在eclipse中创建一个Maven项目

    1. 首先判断eclipse有没有自带Maven Window –> Perferences 如果有Maven,那就是自带了maven插件,如果没有,需要自行安装. 2.配置maven 2.1. ...

  2. JavaWeb学习(三) : 如何在 Eclipse 中创建一个Web 项目并成功运行?

    前置条件 : 1.确保已安装 Eclipse.Tomcat 服务器安装包 2.jdk.环境变量都已配置成功. 3.注意在安装 Eclipse 时一定要选择第二个有 Web 项目的进行安装, 不然安装成 ...

  3. Eclipse中创建一个新的SpringBoot项目

    在Eclipse中创建一个新的spring Boot项目: 1. 首先在Eclipse中安装STS插件:在Eclipse主窗口中点击 Help -> Eclipse Marketplace... ...

  4. Maven(一)如何用Eclipse创建一个Maven项目

    1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...

  5. 使用dos创建一个maven项目

    创建一个maven项目既可以使用eclipse创建,也可以使用dos命令,此文介绍使用dos界面创建一个maven项目 1.win+R输入cmd,打开dos界面 2.cd到你想创建项目的目录(默认都是 ...

  6. (一)maven之创建一个maven项目

    为什么要使用Maven? 1.  maven使用的是本地仓库存储jar,所有项目都会共用仓库中的同一份jar. 2.  Spring core.jar必须同时引用版本兼容的common-logging ...

  7. Maven(三)使用 IDEA 创建一个 Maven 项目

    利用 IDEA 创建一个 Maven 项目 创建 Maven 项目 选择 File --> New --> Project 选中 Maven 填写项目信息 选择工作空间 目录结构 ├─sr ...

  8. 在命令行中运行eclipse中创建的java项目

    在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行  由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...

  9. 如何创建一个Maven项目(eclipse版本)

    1 Maven概念 Maven是一个构建项目和管理项目依赖的工具 2 Maven运行原理 这里需要引入两个词汇,叫 本地仓库.中央仓库 本地仓库:就字面意思,存储在自己电脑上的文件夹(需要自己手动创建 ...

随机推荐

  1. TinyXML 的简单介绍以及使用

    先说几句重点: 1,tinyxml 生成或解析XML非常好用 2,tinyxml 利用DOM(文档对象模型)操作XML,根节点与各个子节点相当于形成一棵树 3,只要你了解tinyxml的用法,可以只n ...

  2. android webview加载网络连接

    webview = (WebView) findViewById(R.id.webview); WebSettings webSettings = webview.getSettings(); //设 ...

  3. nodejs爬虫笔记(一)---request与cheerio等模块的应用

    目标:爬取慕课网里面一个教程的视频信息,并将其存入mysql数据库.以http://www.imooc.com/learn/857为例. 一.工具 1.安装nodejs:(操作系统环境:WiN 7 6 ...

  4. awk空行合并

    [root@localhost ~]#cat urfile [DEFAULT] key1=value1 key2=value2 key3=value3 [agent] key1=value1 key2 ...

  5. Spring Cache For Redis

    一.概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的. 常用的缓存数据库: Redis   使用内存存储(in-memory)的非关系数据库,字符串.列 ...

  6. 开发快速定位需求(Coding之前的工作)

    自我总结,求高人指点,欢迎拍砖! 目的:快速定位feature需求,避免浪费不必要的时间 需求目的:它要用来解决什么问题?(客户需求,bug fixed,学习新技术) 需求对象:它针对的对象是谁?(明 ...

  7. Linux下查找大文件以及目录

    转自:http://www.cnblogs.com/kerrycode/p/4391859.html 在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在 ...

  8. 在线生成PDF的网站-HTML 转 PDF 在线

    http://pdf.df5d.com/   (服务器问题,演示暂停了,但是 下面介绍的组件还是可以使用的) 将前面用到的wkhtmltopdf用一个服务器程序集成在一起,接受一个URL参数,在生成一 ...

  9. 忽略node.js服务中favicon.icon的请求

    场景 一个最简单的node.js的http服务 const http = require('http'); const server = http.createServer(function(req, ...

  10. 史上最全的JFinal源码分析(不间断更新)

    打算 开始 写 这么 一个系列,希望 大家 喜欢,学习 本来就是 一个查漏补缺的过程,希望大家能提出建议.本篇 文章 是整个目录的向导,希望 大家 喜欢.本文 将以 包的形式跟大家做向导. Handl ...