美文网首页
Maven初体验

Maven初体验

作者: ZacharyTAT | 来源:发表于2016-07-26 17:38 被阅读75次

我是前言

在阅读了官方文档以及自己动手实践后,写下这篇笔记用以记录自己的学习过程。所有关于maven的操作都基于命令行。

安装

安装maven之前,需要先装Java环境。maven的安装文件是个压缩包,访问maven官网,点击左侧导航栏的download,选择files列表中的其中一种压缩包,我使用的是windows,故选择下载.zip文件。下载好之后解压缩,配置环境变量,将解压后的bin目录添加到系统Path中。打开cmd,输入mvn -version,若显示maven的版本信息,说明安装成功。此过程比较简单。

使用maven创建简单Java项目

打开cmd,切换到某一目录,比如maven-learning,执行命令

mvn -B archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DgroupId=com.example.maven00 \
    -DartifactId=maven00

注意,反斜杠只是为了说明此命令应写在一行,不应写出。
若首次执行此命令,则maven会下载所需插件,需要等待一段时间。命令执行之后,发现maven-learning目录下生成了一个maven00的目录,此maven00便是刚才命令行中指定的-DartifactId参数。maven00的目录结构如下所示

maven00
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- example
    |               `-- maven00
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- example
                    `-- maven00
                        `-- AppTest.java

该目录结构是maven自动生成的,或者说,要想让maven更好地管理项目,就应该按照这种结构布局,这是约定俗成的(convention)。
maven00目录下有一个pom.xml文件和src目录。maven使用pom(Project Object Model)描述、配置和管理项目,其生成的内容如下所示:

    <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.example.maven00</groupId>
      <artifactId>maven00</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>maven00</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>

在groupId之前的内容大致是固定的写法,不用理会。

  • groupId 该内容由刚才生成项目命令中的-DgroupId参数指定。由两部分组成,组织或公司的唯一标识(一般是域名的反写)+项目名。
  • artifactId 模块在项目中的唯一标识,一般是项目名+模块名;
  • packaging 指打包后的文件格式,默认为JAR,也可以是WAR,EAR等;
  • version 该项目的版本号。打包后的文件名称格式为项目名-版本号, 即artifactId-version,后缀就是packaging中所指定的格式。从上面的内容来看,打包后的文件为maven00-1.0-SNAPSHOT.jar。需要注意的是版本号中有个SNAPSHOT(快照),表示当前版本是开发版(development),若不写SNAPSHOT,而直接是1.0,说明该版本是发行版(release),若再次从1.0发行版进入开发版,则版本号应该写成1.1-SNAPSHOT,以此类推。
  • name和url 该项目显示的名称以及url,用于生成文档。
  • ** dependencies ** 该项目的依赖项,因为使用了junit进行测试,故添加junit依赖项。依赖项单独研究,这里先略过。

再来看src中的内容。src中包含两个目录,main和test,分别表示项目的主源代码目录和测试源代码目录。它们的目录结构大致一样,java文件所属的包也一致,所以只看main目录。

main目录下有一个java目录,java目录下是包结构,包里面是java文件。为什么要有一个java目录,而不直接是包结构?因为跟java目录同级的还可能有一个resources目录,代表项目的资源目录,在打包的时候也会包含在内。默认是没有资源目录的,需要时添加即可,但要注意resources的名称要写对,否则maven不能识别。

测试项目

在项目根目录下,运行命令mvn test,即可编译和测试项目。注意cmd当前所在的目录一定要是根目录,即包含了pom.xml的目录。初次运行,同样会下载运行所需插件。控制台输出的提示信息,经过删减,大致如下所示:

[INFO] Scanning for projects...
[INFO] Building maven00 1.0-SNAPSHOT
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven00 ---
[INFO] skip non existing resourceDirectory <dir>\maven-learning\maven00\src\ma
in\resources
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven00 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to <dir>\maven-learning\maven00\target\classes
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven00 ---
[INFO] skip non existing resourceDirectory <dir>\maven-learning\maven00\src\te
st\resources
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ maven00 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\code\maven-learning\maven00\target\test-classes
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven00 ---
[INFO] Surefire report directory: <dir>\maven-learning\maven00\target\surefire
-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.maven00.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

第一行的Scanning for projects...应该就是在扫描pom.xml文件和项目结构了,所以mvn test命令一定要在项目根目录下执行。可以看到,该过程大致分为五个步骤:default-resources default-compile default-testResources default-testCompile default-test

  • ** default-resources ** 这是在处理主源程序中的资源文件,但由于main目录下没有resources目录,故跳过(skip)该过程。若只处理到这一步而不往后执行,则使用mvn process-resources命令即可。

  • ** default-compile ** 这是在编译主源程序中的代码,具体而言,是编译App.java文件。若只想进行到这一步,使用mvn compile命令即可。

  • ** default-testResources ** 处理测试源程序中的资源文件,与default-resources类似。若只想进行到这一步,则使用mvn process-test-resources命令即可。

  • ** default-testCompile ** 编译测试代码,具体而言,是编译AppTest.java文件。若只想进行到这一步,则使用mvn test-compile命令即可。

  • ** default-test ** 最后这一步,是运行测试用例,后面就是测试运行报告了。

所有这些流程都顺利走完后,项目根目录会生成一个target目录,存放项目的输出文件。

项目打包并安装

使用mvn package打包项目,打包后的文件名为maven00-1.0-SNAPSHOT.jar,存放在target目录下。使用mvn install命令将包安装到本地仓库中。

相关文章

  • Maven学习(一)

    Mybatis初体验——在maven基础下配置Mybatis maven学习(一)——使用映射器 前言通过上文对M...

  • Maven初体验

    我是前言 在阅读了官方文档以及自己动手实践后,写下这篇笔记用以记录自己的学习过程。所有关于maven的操作都基于命...

  • Boot初体验-就那么回事儿

    Spring-Boot初体验 基础配置 环境配置java环境>>>1.8maven环境>>>3.5IDE编辑器>>...

  • yii初体验(7-15)

    yii初体验(7)视图 yii初体验(8)模块 yii初体验(9) 小部件widgets yii初体验(10) 前...

  • 动画篇-layout动画初体验

    动画篇-layout动画初体验 动画篇-layout动画初体验

  • 劳动主题画报

    一、实践画报(含体验日记) _____初体验(如:记者初体验、医生初体验等) 说明: 1.利用假期亲身体验一项工作...

  • 简约不简单

    初体验

  • 体验

    初体验

  • 2018-07-20

    画画初体验

  • RxJava初体验

    RxJava初体验

网友评论

      本文标题:Maven初体验

      本文链接:https://www.haomeiwen.com/subject/ejlfjttx.html