Maven浅谈之快速入门总结(maven项目的创建、打包、执行等)
Maven浅谈之快速入门总结
一、前言
以前听过maven都不知干嘛用的,只知道这个在开发界名气不小,最近学了maven,现在给大家分享下经验,先说点难点的,后面再说maven项目容易的创建方式。
二、maven的作用
在开发项目过程中会用到很多jar包,我们会去各处搜寻依赖的jar包并处理,而且还要经过不断的手工构建项目等。构建是什么意思呢?就是生成项目,编译项目,打包项目,执行,单元测试等,可以想一下,这些工作量所耗费的时间也是不少的,但maven可以解决这些繁琐事,maven可以帮助我们自动构建,免去了这些繁琐的事情。
三、下载、安装和配置环境变量
1.在这个网址上下载maven点击打开链接http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.zip
2.压缩到你自己喜欢的目录上,例如我的压缩目录d:\soft
3.环境变量配置
执行命令 mvn -version 结果如下说明成功,若失败则可能环境变量等因素出错。
四、使用古老的方式创建maven项目
1.创建项目模板使用以下命令,如果你的电脑第一次使用该命令的话会很慢是正常的事,我的电脑都等了快半个钟了。
-DgroupId=com.xiaoxun.crm以com开头为商业用途,org为非营利性的。然后就是公司名xiaoxun,最后一个是项目名称。代表唯一的一个标识。
DartifactId=crm 表示项目名
DarchetypeArtifactId=maven-archetype-quickstart原型的名字极速开发
DinteractiveMode=false交互模式,默认为true。如果你选择交互的话,就是有一步一步的选项指引你去选择和填写相关的标识之类的。这里我用false免去了交互。
出现以下字样说明成功创建模板了
主入口类是什么意思呢?举个例子。在java代码的时候大家都知道有个些类拥有main方法,并且从此处开始执行,而这个带main的类就叫作主类,不难理解吧。配置主入口类就是要相当于设置一个带main的类,设置类运行的起点,这么理解吧。
首先我们返回到 D:\soft 目录下,然后使用tree crm /F 看看crm的文件结构并看下jar包的位置。
我这里是在crm中的target的目录下,现在知道jar包生成的目录了,现在使用cd crm\target进入相应目录再用java -jar crm-1.0-SNAPSHOT.jar进行解包试试,然后会提示说crm-1.0-SNAPSHOT.jar中没有主清单属性
竟然不给解包,这下知道为什么要配置一下项目的主类入口了吧。
使用 jar -uvfe crm-1.0-SNAPSHOT.jar com.xiaoxun.crm.App直接设置主类,但是如果我们每次在DOS下运行项目的时候都要来这样设置,那也比较麻烦吧,所以我们再修改一下配置文件来达到一次性配置主类的效果,这样下次要在DOS运行项目的时候就不用再来执行主类设置的命令了。配置方式如下:
回到打开项目的目录下即crm的目录下
打开pom.xml然后在project元素里增加以下内容:
8.进入target目录下运行jar包
命令行直接输入java -jar crm-1.0-SNAPSHOT.jar
输出Hello World!
说明运行jar包成功
9.运行项目里的其他类
使用mvn exec:java -Dexec.mainClass="com.mashensoft.crm.App"
现在说下maven更简单的创建方式,首先准备好eclipse工具。
1.打开eclipse工具
2.然后选择File 》 New 》Maven Project
3.在弹出的界面下一直下一步,直到出现如下界面,填写Group Id和Artifact Id然后点finish
创建一个project和该项目对比一下如图
这个我们使用过eclipse的都很熟悉,src下建包写代码,那么配置文件放在哪里?单元测试代码放在哪里?字节码文件又会在哪里?……很多文件都没有一个统一标准,更多时候都是开发者的自由选择,每个人有自己的风格,要团队协作起来很困难。你看一下使用maven构建一个普通Java项目之后的目录结构:
看到使用Maven构建的普通Java项目,对源代码、单元测试代码至后续需要的文件都有专门的目录规划。main目录下是项目的主要代码,test目录下存放测试相关的代码,编译输出后的代码会放在target目录下,src/main/java下存放Java代码,src/main/resources下存放配置文件。
pom.xml是Maven项目的配置文件
上图的最后有一个pom.xml,这是Maven的核心配置文件,pom称为Project Object Model(项目对象模型),它用于描述整个Maven项目,所以也称为Maven描述文件。
当然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.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mashensoft.crm</groupId>
<artifactId>crm</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>crm</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
那么里面的内容怎么个表示的呢?modelVersion指定了当前Maven模型的版本号、groupId前面已经说过了、artifactId为Maven构建的项目名、version版本号,SNAPSHOT为快照的意思,说明该项目还在开发中,是不稳定的版本。在Maven中,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标。
有些配置文件里还包含以下元素,在这总结一下
packing为项目打包的类型,有jar、war等,默认是jar
dependencies和dependency依赖的jar包
properties用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),中文乱码的时候,可以设置为UTF-8,也可定义相关构建版本号,便于日后统一升级。
build表示构建相关的配置,比如前面用的build,在build在里面的mainClass设置了入口类