Maven简介与Maven安装

Maven简介与Maven安装

1.简介

1.1 目标

Maven是一个自动化构建工具,常用来构建和管理java项目。

Maven的主要目的是让开发人员在最短的时间对整个项目的开发状态做一个全面的理解。具体来说,maven有如下子目标:

  • 让构建过程容易
  • 提供统一的构建系统
  • 提供高质量的项目信息
  • 提供最佳开发指导
  • 允许透明迁移到新特性

1.2 标准化

Maven对一些构建的细节做了一些屏蔽,因此对开发人员来说是一种解脱,这也让构建过程变得更加容易了许多。

Maven使用POM模型和一系列的插件来构建项目(后面会详细介绍),提供了统一的构建系统。一旦你熟悉了使用Maven构建的项目,那么开发人员机会很快的熟悉其他使用maven构建的项目,从而节约了时间,这就标准化、统一化带来的好处。

另外,Maven还提供了很多有用的项目信息,这些信息部分来自于项目的POM文件,部分来自于项目的源代码,例如:

  • 源代码控制产生的change log
  • Cross referenced sources
  • Mailing lists
  • 依赖列表
  • 包含代码覆盖率的单元测试报告

对于软件开发流程来讲,maven采用目前最佳实践的那些开发原则,来引导一个项目朝着正确的方向前进。例如,规范、执行、单元测试报告这些都是使用maven进行普通构建的一部分内容。单从测试这一块,Maven将当前测试的最佳实践作为测试指南:

  • 测试源代码保持独立,但是源代码树保持并行
  • 使用约定俗成的测试用例名称来定位和执行测试用例
  • 让测试用例自己负责自己的环境,而不依赖于具体的构建环境

maven也推荐一些默认的目录结构,这样一来,如果开发人员熟悉了maven,就会很轻松的上手其他使用maven构建的项目了。

1.3 应用

mavenApache软件基金会下面的一个开源项目,并且对于大型的、复杂的java项目的自动化构建是一个给力的工具而被广泛使用。因此学习使用maven来自动化构建java项目对于有志于从事java开发的同学来讲,是非常有必要的。

2 下载安装

对于windows的下载安装比较简单:

通过链接将文件下载到本地解压,然后将bin文件夹的地址添加到环境变量中即可。

测试安装:打开cmd,运行

mvn -v

即可查看是否安装配置成功。

这里写图片描述

对于其他平台的安装方式,可自行参照官网给出的指南。

3 创建Maven项目

3.1 创建项目

安装好了maven,那就新建一个Maven项目吧。

以下涉及到一些maven命令,但由于maven命令和maven的插件使用方式需要另开一篇或数篇来详细介绍,因此新建maven项目过程中涉及到的命令现在大可不必深究,有个初步的印象即可。

  1. 在合适的文件夹下,运行
mvn archetype:generate

这里写图片描述

选择org.apache.maven.archetypes:maven-achetype-quickstart,也就是7

这里写图片描述

  1. 经过上述的操作后,maven会按照固定的文件结构模板为我们生成了一个工程,工程目录结构如下:
    • demo
      • src
      • main
        • java
        • com
          • company
          • demo
            • App.java
      • test
        • java
        • com
          • company
          • demo
            • AppTest.java
      • pom.xml

自此,成功利用mavenquickstart模板创建了一个空的的项目。

3.2 修改POM

添加pom.xml如下:


<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <verbose>true</verbose>
                    <fork>true</fork>
                    <executable>${JAVA_HOME}</executable>
                </configuration>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-testCompile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.company.demo.App</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

上面的pom.xml是对整个项目如何进行自动化构建的配置说明文件,因此看上去比较繁琐,这里不做详细解释,后面会详细介绍pom.xml

上述配置主要是配置了两样:

  • 编译源码的JDK路径
  • 程序打包生成的成jar包的入口(主类)

然后运行命令

mvn verify

这里写图片描述

到此,我们成功的配置了maven如何进行自动化构建,然后编译打包生成了一个可执行的jar包。

jar包的位置demo argetdemo-1.jar

执行命令

java -jar demo-1.jar

可以看到输出

hello world!

4 总结

本篇主要简单介绍了maven是什么,以及maven在实际软件开发流程中的应用,随后便通过实例展示了如何下载、安装、配置maven,以及最后利用一些基本的maven命令新建了一个空的模板项目,并将其打包成了一个可执行的jar包。

maven的功能不仅仅是编译、打包一个java项目那么简单,更多的maven的功能的使用、一些基本的maven命令的用法和含义以及maven插件系统和POM会在后面介绍。

原文地址:https://www.cnblogs.com/Spground/p/8536140.html