Maven(Eclipse版)

时间:2021-07-29 10:26:15

前言:

  由于最近工作学习,总是能碰到Maven的源码。虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下。这篇文章不是一个全面的Maven解析,而是一个简单的介绍,包括Eclipse中如何使用Maven,如何利用Maven工程学习。

  循序渐进,你将会学到下面的知识:

  maven的相关书籍!

  什么是maven?

  如何在eclipse中使用maven?

  maven的工程是什么样子?

  Eclipse中maven的常用命令!

  相关书籍

  首先推荐两本书,都是网上找的pdf。由于我自己没有工作需求,因此也只是简单的了解一下而已,并没有深入的研究。有兴趣的朋友,可以多看看这两本书。

Maven权威指南

Maven实战

  什么是maven?

  Maven是一个用于项目构建的工具,通过它便捷的管理项目的生命周期。即项目的jar包依赖,开发,测试,发布打包。

  下面我自己总结一下它的几个特点,看了这些特点,也许对maven有更多的了解。

  1 jar包依赖

  这个也许会maven最突出的特点了使用maven不需要上网单独下载jar包,只需要在配置文件pom.xml中配置jar包的依赖关系,就可以自动的下载jar包到我们的项目中。这样,别人开发或者使用这个工程时,不需要来回的拷贝jar包,只需要复制这个pom.xml就可以自动的下载这些jar包。

  而且,我们自己下载jar包,还有可能造成版本的不一致,这样在协同开发的过程中就有可能造成代码运行的不一致。通过使用maven精确的匹配jar包,就不会出现这种问题了。

  2 项目坐标

  Maven通过特定的标识来定义项目名称,这样既可以唯一的匹配其他的jar包,也可以通过发布,使别人能使用自己的发布产品。这个标识就被叫做坐标,长的其实很普通,就是简单的xml而已:

1   <groupId>com.test</groupId>
2 <artifactId>maventest</artifactId>
3 <version>0.0.1-SNAPSHOT</version>
4 <packaging>jar</packaging>
5
6 <name>maventest</name>
7 <url>http://maven.apache.org</url>

  groupId:所述的项目名称,由于有的项目并不是一个jar包构成的,而是由很多的jar包组成的。因此这个groupId就是整个项目的名称。

  artifactId:包的名称。

  version:版本号。

  packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。

  nameurl,一个是名称,一个是maven的地址。主要就是上面的几个参数。

  当想要依赖什么jar的时候就可以通过下面的方式依赖:

1 <dependencies>
2 <dependency>
3 <groupId>junit</groupId>
4 <artifactId>junit</artifactId>
5 <version>3.8.1</version>
6 <scope>test</scope>
7 </dependency>
8 </dependencies>

  各个属性的内容基本上都是一样的。

  这里要注意的是jar包的命名规则:

  artifactId-version[-classifier].packaging

  比如上面的pom.xml生成的jar包名字就是:maventest-0.0.1-SNAPSHOT.jar。

  这里的classifier是可选的,但是有的项目可能还需要导出附属的一些文件,如javadoc,source等等,那么这个地方就需要配置一个字符串。一般都是JDKXXX之类的。

  3 测试驱动

  Maven是测试驱动的开发思路,因此工程创建初期,就包含两个文件夹,main和test。一个用于放置开发的java文件,一个用于写test单元测试。这样每次开发的时候,提前设计单元测试,就能帮助减少BUG。

  如何在eclipse中使用maven

  我使用的eclipse有自带的maven插件,因此直接创建就可以了。这里就不介绍如何安装maven了。下面介绍一下maven工程的创建:

  1 如何创建maven工程:

  直接点击新建,在里面可以找到Maven选项卡,点击Maven Project创建Maven工程

Maven(Eclipse版)

  2 选择默认的工程位置

Maven(Eclipse版)

  3 创建工程,红色是创建普通的maven工程的。粉色是创建web工程的。

Maven(Eclipse版)

  6 填写相关的groupId artifactId version等信息

Maven(Eclipse版)

  点击完成就创建好了一个简单的maven工程。

  maven工程是什么样子的?

  maven的工程一般都是如下的结构:

first_maven
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- test
| | `-- App.java
| `-- resources
| `-- META-INF
| `-- application.properties
`-- test
`-- java
`-- com
`-- test
`-- AppTest.java

  pom.xml:用于定义或者添加jar包的依赖

  src-main:用于存放java源文件

  src-test:用于存放测试用例。

  也许工程下还会出现target文件夹,这个是用来生成对应的class文件或发布的jar包。

  Eclipse中maven常用的命令

  点击Run As就可以发现几个Maven的命令:

  Maven Build:

  这个命令用于编译Maven工程,执行命令后会在target文件夹中的classes中生成对应的class文件。

  Maven Clean:

  删除target文件夹,即删除生成的package包以及class等文件。

  Maven Test:

  先自动进行编译,在运行所有的测试用例。

  Maven install:

  发布生成对应的package包。

  注意:

  留意上面的命令的作用,build和test都会生成相应的class文件。也就是说,当你新建一个maven工程,或者clean一个maven工程后,如果没有使用这两个命令,直接针对类进行测试,会跑出java.class.notfound的错误。因为此时还没有编译生成class文件,如果有朋友发现这个问题注意一下就好了。(该部分只针对旧版本,新版本如maven3.3是可以自动编译的)

  只有使用了上面的两个命令后,才能针对某个类进行单元测试。

Maven(Eclipse版)的更多相关文章

  1. Maven那点事儿(Eclipse版)

    Maven那点事儿(Eclipse版)   前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Mave ...

  2. Eclipse中使用JRebel实现项目热部署(Maven插件版)

    JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...

  3. 【Java开发】Maven那点事儿(Eclipse版)

    Maven那点事儿(Eclipse版) 前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Maven解 ...

  4. maven&sol;eclipse搭建ssm&lpar;spring&plus;spring mvc&plus;mybatis&rpar;

    maven/eclipse搭建ssm(spring+spring mvc+mybatis) 前言 本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读<Maven 实 ...

  5. maven Eclipse实战材料整理

    最近在看github上面的项目,发现好多的源码都是maven组织的,但又要去使用maven,因此找资料学习,但是效果很不好,直到昨天晚上看了mooc上面的视频,理清了自己的思路,特将资料列表如下: 视 ...

  6. &lbrack;Maven&rsqb;Eclipse插件之Maven配置及问题解析&period;

    前言:今天在自己环境装了Maven环境, 并且安装了Eclipse插件, 在查找插件过程中确实遇到一些问题, 好不容易找到一个  却又有问题.装好了插件之后, 用Eclipse创建Maven项目却出现 ...

  7. maven eclipse web项目流程(简化内容)

    1.maven eclipse 环境搭建 1.1 下载解压配置环境变量(解压.环境变量maven目录到bin.setting.xml 改本地仓库) 1.2 eclipse插件安装配置(link安装.加 ...

  8. 使用maven&plus;eclipse搭建最简单的struts2的helloworld

    使用maven+eclipse搭建最简单的struts2的helloworld 一.web分层结构简介 1.web[细]粒度分层结构: 按细粒度分层可以分为以下6种: 1).表现层:html/css/ ...

  9. Java &period;classpath文件Classpath entry org&period;maven&period;eclipse&period;MAVEN2&lowbar;CLASSPATH&lowbar;CONTAINER will not be exported or published异常解决办法

    在实际用Maven构建Java Web项目开发过程中,有时候会出现上述情况的警告,如果不解决这个警告,就会在启动Web服务器的时候抛出无法加载Maven管理的第三方jar包的异常. 所以,要解决上面的 ...

  10. maven&plus;eclipse&plus;jboss&plus;oracle 12c&plus;memcached&plus;AngularJS

    Maven 参考梁总的: Eclipse Java EE IDE for Web Developers集成的Maven 3 指向自己安装的 Maven Maven下载.安装和配置(二) 在本地配置ma ...

随机推荐

  1. &lbrack;Azure&rsqb; 使用 Azure 快速搭建 Redis 服务器

    Redis相信玩开源,大数据的朋友们并不陌生,大家最熟悉的使用者就是新浪微博,微博的整体数据缓存都是基于Redis的,而新浪对Redis的使用也非常深,据说是一组64G内存的Redis集群.前段时间我 ...

  2. iOS 三种收起键盘的方法

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  3. cookbook学习第二弹

    1.5怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素 带有双下划线的方法,会在需要被调用的位置自动被调用 带有单下划线的变量是私有变量 下面利用类heap ...

  4. 处理mysql上百万条数据的优化

    php 处理上百万条的数据库如何提高处理查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字 ...

  5. squid安装、配置、控制

    Squid 目录 [隐藏]  1 前言 2 安装 2.1 从源中安装 2.2 源码编译安装 3 基本配置 4 高级控制 5 认证 6 总结 6.1 服务器配置 6.2 用户分类 6.3 行为分类 6. ...

  6. Codeforces Round &num;292 &lpar;Div&period; 1&rpar; B&period; Drazil and Tiles 拓扑排序

    B. Drazil and Tiles 题目连接: http://codeforces.com/contest/516/problem/B Description Drazil created a f ...

  7. sql 如何把查询得到的结果如何放入一个新表中

    如何把这个查询到的结果放到一张新表中? 2014-03-13 15:26   提问者采纳   表已经存在:insert into 表名 (列名1... 列名n) select 列名1....列名n f ...

  8. Java8 Stream API

    Stream是Java8中,操作集合的一个重要特性. 从iteration到Stream操作 当你操作一个集合的时候,你通常的做法是迭代每一个元素,然后处理你想要的事情.举个例子: String co ...

  9. HDU2024JAVA

    C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  10. web基础-web工作原理,http协议,浏览器缓存

    1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------- ...