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

一、需要准备的东西

  1. JDK
  2. Eclipse
  3. Maven程序包

二、下载与安装

  1. 前往链接: https://maven.apache.org/download.cgi下载最新版的Maven程序:

Maven的api_Maven的api

  1. 将文件解压到D:\Program Files\Apache\maven目录下:

Maven的api_Java_02

  1. 新建环境变量MAVEN_HOME,赋值D:\Program Files\Apache\maven

Maven的api_maven_03

  1. 编辑环境变量Path,追加%MAVEN_HOME%\bin;
  2. Maven的api_Maven的api_04

  3. 至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功:mvn -v
  4. Maven的api_eclipse_05

三、配置Maven本地仓库

  1. 在D:\Program Files\Apache\目录下新建maven-repository文件夹,该目录用作maven的本地库。
  2. 打开D:\Program Files\Apache\maven\conf\settings.xml文件,查找下面这行代码:
<localRepository>/path/to/local/repo</localRepository>

localRepository节点默认是被注释掉的,需要把它移到注释之外,然后将localRepository节点的值改为我们在3.1中创建的目录D:\Program Files\Apache\maven-repository。

  1. localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。

当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。

此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。

  1. 运行一下DOS命令
mvn help:system

如果前面的配置成功,那么D:\Program Files\Apache\maven-repository会出现一些文件。

四、配置Eclipse的Maven环境

  1. Eclipse Oxygen,打开Window->Preferences->Maven->Installations,右侧点击Add。

Maven的api_eclipse_06

  1. 设置maven的安装目录,然后Finish

Maven的api_java_07

  1. 选中刚刚添加的maven,并Apply。
  2. Maven的api_Java_08

  3. 打开Window->Preferences->Maven->User Settings,配置如下并Apply:

Maven的api_Maven的api_09

至此,Maven的安装和配置全部结束。第一次创建项目请保持网络畅通,建议是Maven项目一直保持网络连接

如何创建一个Maven项目

1.File->New->Maven Project,点击Next,然后在中间带有滚动条的面板中选择webapp,然后Next。groupId:公司域名反写+项目名,Artifact Id:项目名.点击Finsh即可。

Maven的api_java_10


Maven的api_maven_11


第一次创建项目请耐心等待,因为要过程中要下载。建立好的项目结构如下:

Maven的api_maven_12

建好的项目会报一把红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的api_eclipse_13


Maven的api_java_14

报错解决了,那我们来了解一下Maven项目的结构。

最主要的是我们java代码要在哪里写,这时我们发现有个Java Resources的文件夹,打开后却只有一个src/main/resources的文件夹,这时候就需要进行一步操作了。点击项目鼠标右键->Build Path->Configure Build Path点击进入,在中间面板选择Source,将 Allow output folders for source folders 前面的勾去掉,点击Apply即可。然后我们就会发现多了两个文件夹。

Maven的api_Maven的api_15


Maven的api_Maven的api_16

那么这三个文件夹是干嘛的呢?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 时 即表明项目没问题!

Maven的api_Maven的api_17

Java项目如何转Maven项目

首先,右键选择 JavaDemo,选择“Configure –> Convert to Maven Project”, 填写“Group ID”和“Artifact Id”都为“JavaDemo”。如图 3 所示:

Maven的api_maven_18


图 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 刷新。

Maven的api_Maven的api_19


图 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常用命令

  1. 创建Maven的普通Java项目:

mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName

  1. 创建Maven的Web项目:

mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp

  1. 反向生成 maven 项目的骨架:

mvn archetype:generate

缩写写法:

mvn archetype:generate -DgroupId=otowa.user.dao -DartifactId=user-dao -Dversion=0.01-SNAPSHOT

  1. 编译源代码:

mvn compile

  1. 编译测试代码:

mvn test-compile

  1. 运行测试:

mvn test

  1. 产生site:

mvn site

  1. 打包:

mvn package

  1. 在本地Repository中安装jar:

mvn install
例:installing D:\xxx\xx.jar to D:\xx\xxxx

  1. 清除产生的项目:

mvn clean

  1. 生成eclipse项目:

mvn eclipse:eclipse

  1. 生成idea项目:

mvn idea:idea

  1. 组合使用goal命令,如只打包不测试:

mvn -Dtest package

  1. 编译测试的内容:

mvn test-compile

  1. 只打jar包:

mvn jar:jar

  1. 只测试而不编译,也不测试编译:

mvn test -skipping compile -skipping test-compile
( -skipping 的灵活运用,当然也可以用于其他组合命令)

  1. 清除eclipse的一些系统设置:

mvn eclipse:clean

18.查看当前项目已被解析的依赖:

mvn dependency:list

19.上传到私服:

mvn deploy

  1. 强制检查更新,由于快照版本的更新策略(一天更新几次、隔段时间更新一次)存在,如果想强制更新就会用到此命令:

mvn clean install-U

  1. 源码打包:

mvn source:jar

mvn source:jar-no-fork