Maven使用方法
- Maven的使用方法及配置
- 什么是Maven
- 如何配置及使用Maven
- 如何创建一个Maven项目
- Java项目如何转Maven项目
- Maven常用命令
- 引用
Maven的使用方法及配置
简要讲述一下如何配置maven及使用
什么是Maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
如何配置及使用Maven
一、需要准备的东西
- JDK
- Eclipse
- Maven程序包
二、下载与安装
- 前往链接: https://maven.apache.org/download.cgi下载最新版的Maven程序:
- 将文件解压到D:\Program Files\Apache\maven目录下:
- 新建环境变量MAVEN_HOME,赋值D:\Program Files\Apache\maven
- 编辑环境变量Path,追加%MAVEN_HOME%\bin;
- 至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功:mvn -v
三、配置Maven本地仓库
- 在D:\Program Files\Apache\目录下新建maven-repository文件夹,该目录用作maven的本地库。
- 打开D:\Program Files\Apache\maven\conf\settings.xml文件,查找下面这行代码:
<localRepository>/path/to/local/repo</localRepository>
localRepository节点默认是被注释掉的,需要把它移到注释之外,然后将localRepository节点的值改为我们在3.1中创建的目录D:\Program Files\Apache\maven-repository。
- localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。
此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。
- 运行一下DOS命令
mvn help:system
如果前面的配置成功,那么D:\Program Files\Apache\maven-repository会出现一些文件。
四、配置Eclipse的Maven环境
- Eclipse Oxygen,打开Window->Preferences->Maven->Installations,右侧点击Add。
- 设置maven的安装目录,然后Finish
- 选中刚刚添加的maven,并Apply。
- 打开Window->Preferences->Maven->User Settings,配置如下并Apply:
至此,Maven的安装和配置全部结束。第一次创建项目请保持网络畅通,建议是Maven项目一直保持网络连接
如何创建一个Maven项目
1.File->New->Maven Project,点击Next,然后在中间带有滚动条的面板中选择webapp,然后Next。groupId:公司域名反写+项目名,Artifact Id:项目名.点击Finsh即可。
第一次创建项目请耐心等待,因为要过程中要下载。建立好的项目结构如下:
建好的项目会报一把红x,别急,这是正常现象。你发现它的报错在index.jsp页面上,打开页面,鼠标移到报错处,The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path,报了一个HttpServlet没有找到。所以这个时候,既然说报错是正常现象,那么怎么解决?
首先打开pom.xml,切换为下面菜单的pom.xml.这时你会发现pom.xml跟web.xml一点都不一样。别急,首先你打开浏览器,搜索maven点击进入搜索出来的第三个,即http://mvnrepository.com/,这个是什么呢?这就是maven的中央仓库。中央仓库就是我们找jar包的地方。在搜索框输入servlet进行搜索,点击进入搜索出来的第一个,然后你可以自己选择相应的版本,在copy它的代码,复制到pom.xml的节点中,然后保存,它就会下载,等下载完成,报错就解决了。
报错解决了,那我们来了解一下Maven项目的结构。
最主要的是我们java代码要在哪里写,这时我们发现有个Java Resources的文件夹,打开后却只有一个src/main/resources的文件夹,这时候就需要进行一步操作了。点击项目鼠标右键->Build Path->Configure Build Path点击进入,在中间面板选择Source,将 Allow output folders for source folders 前面的勾去掉,点击Apply即可。然后我们就会发现多了两个文件夹。
那么这三个文件夹是干嘛的呢?src/main/java:Java 源文件 src/main/resources:Java 资源文件 src/test/java Java 测试文件.而页面则建在src/main/webapp下即可,在webapp/WEB-INF下你会发现熟悉的web.xml.
这个时候一个maven的项目就建好了,在把项目加入服务器时,最好就把项目测试一下:点击项目鼠标右键->Run As->Maven test 等待一会。当看到如下有 BUILD SUCCESS 时 即表明项目没问题!
Java项目如何转Maven项目
首先,右键选择 JavaDemo,选择“Configure –> Convert to Maven Project”, 填写“Group ID”和“Artifact Id”都为“JavaDemo”。如图 3 所示:
图 3 Java 项目编程 Maven 项目
可以看到,项目图标变了,多了 pom.xml,Maven Dependencies,target 等。但 src 代码位置不对,没有指示出主代码和测试代码。
希望你还有印象,前面两小节,对 Java 项目和 Maven 项目的 .classpath 文件进行的比较。因此,IDE 在转换时没有自动修改 .classpath 文件。
而你只需在文件系统下,在 src 目录下建立 main 和 test 子目录,并在它们下再分别建立 java 子目录。也就是,src/main/java,src/test/java。然后修改 .classpath 文件,或用一个现成的 Maven .classpath 文件覆盖它即可。
将:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
改成:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
此时,JavaDemo 这个项目就会变成如图 4 所示,如果你着急,就按 F5 刷新。
图 4 Java 项目转换成 Maven 项目
现在,这个 Java 项目就跟 Maven 创建的项目一样了。
了解这个原理,你也能将 Maven 项目转换成 Java 项目。
另外,你会发现 Eclipse 这个 IDE 一个方便的地方是,即便 Eclipse已经打开了你的项目,你也可以在操作系统的资源管理器上随意操作文件和文件夹(当然,我说的是 Windows 操作系统),这跟一些其他的 IDE不同,比如微软的 VS,你就不能这么干,原因很简单,对一个 IDE 正在访问的文件,又在操作系统的资源管理里对文件进行剪切或删除,IDE显然不会答应。但是 Eclipse 就跟 Notepad 或 UE这些文本编辑器似的,会监视文件,但不会阻止你做你想做的事,给程序员最大的灵活度和自由度,这也是 Java 的理念之一。所以,在 Maven项目与 Java 项目进行转换成,无所谓先进行哪步,后进行哪步,如图 3,项目中有 pom.xml 文件了,即便 .classpath文件不正确,那么这个项目的图标也会已变成 Maven 图标,之前的 bin 目录或 lib 目录也会存在,虽然 Maven完全不需要它们,而且主代码和测试代码的显示也完全不对,甚至,还会出现完全按操作系统的一级又一级……的目录结构来显示,而不是逻辑结构——Java 包的方式来显示~如果最终所有的修改达到 Maven的要求,它就能正确显示结构。
Maven常用命令
- 创建Maven的普通Java项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName
- 创建Maven的Web项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
- 反向生成 maven 项目的骨架:
mvn archetype:generate
缩写写法:
mvn archetype:generate -DgroupId=otowa.user.dao -DartifactId=user-dao -Dversion=0.01-SNAPSHOT
- 编译源代码:
mvn compile
- 编译测试代码:
mvn test-compile
- 运行测试:
mvn test
- 产生site:
mvn site
- 打包:
mvn package
- 在本地Repository中安装jar:
mvn install
例:installing D:\xxx\xx.jar to D:\xx\xxxx
- 清除产生的项目:
mvn clean
- 生成eclipse项目:
mvn eclipse:eclipse
- 生成idea项目:
mvn idea:idea
- 组合使用goal命令,如只打包不测试:
mvn -Dtest package
- 编译测试的内容:
mvn test-compile
- 只打jar包:
mvn jar:jar
- 只测试而不编译,也不测试编译:
mvn test -skipping compile -skipping test-compile
( -skipping 的灵活运用,当然也可以用于其他组合命令)
- 清除eclipse的一些系统设置:
mvn eclipse:clean
18.查看当前项目已被解析的依赖:
mvn dependency:list
19.上传到私服:
mvn deploy
- 强制检查更新,由于快照版本的更新策略(一天更新几次、隔段时间更新一次)存在,如果想强制更新就会用到此命令:
mvn clean install-U
- 源码打包:
mvn source:jar
或
mvn source:jar-no-fork