Maven实战之旅第六篇——maven常用指令
Maven实战之旅第六篇——maven常用指令
前面在maven实战之旅第一篇(连接)我们说过,maven能够帮助我们更好的构建项目,能够帮我们自动化构建过程,从清理,编译,测试到生成报告,再到打包和部署。这个过程我们不需要一遍又一遍的输入命令,一次次点击鼠标,我们只需要使用maven配置好项目。然后输入简单的命令。Maven会自动帮我们处理好那些繁琐的任务。 Maven常用命令有以下几种: 清理 maven clean 测试 maven test 编译 maven compile 打包 maven package 部署 maven install
下面我们通过一个简单的maven版的用户管理系统来向读者详细的介绍maven这些常用指令。 首先我们在eclipse下新建一个mana-core的maven项目(项目源码我已经上传到csdn上面去了,但是为了让读者直到这个项目怎么来的,我还是大致的把关键地方讲一下,项目源码下载连接)项目结构如图所示
项目建完之后再点击项目右键->new->source folder, 分别建立两个source folder,一个src/main/resources和src/test/resources,这两个source folder是用来存放资源文件的。
建完后项目结构如图所示
把src/main/java下的package删掉,建一个名为com.company.usermange.model的package,并在该package下建一个实体类user,实体类包含用户id,username,password和nickname四个属性。接着在src/main/java建一个名为com.company.usermange.dao的package,作为控制层,在该package下建立一个接口IUserDao和接口实现类UserDao。然后再建立一个名为com.company.usermange.util的package用来存放工具类SqlHelper,并在该package中实现一个对数据库进行操作的工具类,同时在我们的资源文件夹src/mai/resources下建立一个连接数据库的所需参数的资源文件dbInfo.properties,SqlHelper利用该资源文件连接数据库。最后在我们的IUserDao和UserDao中实现对用户管理系统的增删改查功能。这就是我们这个用户管理系统的简单实现,写完后文件目录如下:
当然,我们还要配置项目的依赖包,直接在pom.xml文件中配置即可,我们这个项目是对mysql数据库进行操作,所以依赖jdbc相关jar包,此外我们还要对项目进行测试,所以需要juint相关jar包,配置如下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.24</version>
</dependency>
</dependencies>
实际上,当你把这些配置写到pom.xml文件中并保存的时候,你会看到maven console下会自动下载相关的依赖jar包。 项目完成之后,我们建立一个测试类进行测试,在src/test/java下建立一个名为com.company.usermange.dao的package,并在其中建立一个UserDaoTest类对UserDao中的方法进行测试。 至此,我们的项目以及测试类均已完成,大家可以直接把源码导入项目中(file->import->maven->existing maven project),也可以按照上面的步骤一步步来,代码复制粘贴即可,我这里重点是要讲解maven的几个常用指令,建立项目过程我就不详细叙述了。
Maven test:测试 点击pom.xml文件,右键run as->maven build…(还有一个是maven build,这两个的区别是前者可以输入指令第一次使用maven build…后,其中的指令会保存到maven build中),然后再goals中输入test,点击run,因为是第一次使用该指令,maven会下载相关的插件。
指令执行完毕之后,我们可以在控制台看到结果。测试了五个方法,0个失败。
此外从上图中我们可以看到,在执行test指令之前,target文件夹中没有任何内容,执行test之后,文件夹中多了一些文件。我们在console中看到的测试结果,在surefire-reports文件夹下的com.company.usermange.dao.UserDaoTest.txt文件可以看到。这里有一点要说明一下,maven在执行test指令时,是根据类名来查找测试类的,所以测试类的类名也有命名规则。这里我就不赘叙了,一般以以test开头,或者是test结尾均可以。
maven celan:清理 刚刚我们看到了,使用test指令,可以在target中生成一些文件,现在我们再执行以下clean指令,右键pom.xml文件->run as 在goals中输入clean,点击run。同样如果是第一次执行,maven也会自动下载一些相关的插件。执行完毕之后,你会发现target文件夹下的文件都被清空了,这就是clean的作用。将maven指令包括测试,编译,打包等生成的文件清空。
maven compile:编译 compile是对我们的maven项目进行编译操作,执行该指令后,会在target文件夹下看到我们执行编译生成的编译文件。通常我们比较习惯使用clean compile这样的组合指令。右键pom.xml->run sa->在goals中输入clean compile。执行完毕之后可以在workspace/mana-core/target中看到的生成的编译文件。
maven package:打包 执行package指令后可以将我们的项目打包成jar文件。右键pom.xml->run as->在goals中输入clean package,执行完毕之后可以在target中看到生成的jar文件。
maven install:将打包好的jar文件存入本地仓库 执行install指令,可以将项目打包成jar包并放在本地仓库,放在本地仓库后就可以供其它的项目依赖使用。因为我们在pom.xml文件中给mana-core项目配置过坐标,所以其他的项目就可以通过这个坐标在本地仓库中找到mana-core.jar文件,作为依赖。
这是执行完install指令后在本地仓库中的mana-core.jar文件。
maven deploy:将项目发布到远程仓库中(我们后面再讲解)
以上是maven最基本最常用的指令,当然还有一些其它不常用的指令,比如: 生成eclipse项目:mvn eclipse:eclipse 生成idea项目:mvn idea:idea 生成站点目录: mvn site Maven指令有时候也会组合着使用 只打包不测试:mvn -Dtest package 编译测试的内容:mvn test-compile 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile 前面我们说的maven archetype也是maven指令
- 技术分享:杂谈如何绕过WAF(Web应用防火墙)
- 模拟Executor策略的实现如何控制执行顺序?怎么限制最大同时开启线程的个数?为什么要有一个线程来将结束的线程移除出执行区?转移线程的时候要判断线程是否为空遍历线程的容器会抛出ConcurrentM
- ViewPager快速实现引导页
- Linux学习 - 常用和不太常用的实用awk命令
- 漏洞预警:厄运cookie(Misfortune Cookie)漏洞影响全球1200万台路由器
- 漏洞预警:Google安全研究人员发现NTP(网络时间协议)最新漏洞
- 揭秘:从内部源码看Facebook技术(第一集)
- Python 自然语言处理《釜山行》人物关系
- 注意:C++中double的表示是有误差的
- 完善RecyclerView,添加首尾视图
- 初识Node.js
- Linux学习 - SED操作,awk的姊妹篇
- Android面试之高级篇
- 解密所有APP运行过程中的内部逻辑
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android 自定义球型水波纹带圆弧进度效果(实例代码)
- Android自定义View实现弹幕效果
- 使用Injection Token将字符串类型的参数注入到类的构造函数里
- 联想Y480 ubuntu安装有线驱动
- 通过运行时单步调试弄清楚[(ngModel)]的双向绑定的工作原理
- Shadow Root DOM的一些API
- 【Flutter高级玩法- Flow 】我的位置我做主
- PCMAN FTP STOR命令栈溢出
- 一个基于ngrx的Angular图书搜索应用,带网络请求
- Android利用RecyclerView实现列表倒计时效果
- 【Flutter Unit 重大更新 1 】超好用的组件收藏夹上线
- android特卖列表倒计时卡顿问题的解决方法
- dotnet 多线程禁止同时调用相同的方法 禁止方法重入调用 双检锁的设计
- android实现倒计时功能(开始、暂停、0秒结束)
- 【-Flutter/Dart 语法补遗-】 sync* 和 async* 、yield 和yield* 、async 和 await