1. 概述

构建一个软件项目通常包括以下任务:下载依赖项、在类路径上添加额外的JAR文件、将源代码编译成二进制代码、运行测试、将编译后的代码打包成可部署的文件(如JAR、WAR和ZIP文件),并将这些文件部署到应用服务器或仓库。

Apache Maven 自动化了这些任务,降低了手动构建软件时人为错误的风险,并将编译和打包代码的工作与代码构建分离。

在这个教程中,我们将探索这个强大的工具,它使用中央信息——项目对象模型(Project Object Model,简称POM)——来描述、构建和管理Java软件项目,POM是用XML编写的。

2. 为何使用Maven?

Maven的关键特性包括:

mvn archetype:generate \
  -DgroupId=com.baeldung \
  -DartifactId=baeldung \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false

groupId 是表示创建项目的组织或个人的参数,通常是倒置的公司域名。artifactId 是项目使用的基包名,我们使用标准的archetype。这里我们使用最新版本的模板,以确保项目结构是最新的。

由于我们没有指定版本和打包类型,它们将默认设置为version1.0-SNAPSHOTpackaging默认为jar

如果你不知道提供哪些参数,可以始终指定interactiveModetrue,这样Maven会询问所有必需的参数。

命令执行完毕后,我们将在src/main/java文件夹中得到一个包含App.java类的Java项目,这是一个简单的"Hello World"程序。

我们还拥有一个示例测试类在src/test/java中。该项目的pom.xml看起来类似如下:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.baeldung</groupId>
    <artifactId>baeldung</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>baeldung</name>
    <url>http://www.example.com</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.12.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <mainClass>com.baeldung.java.App</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

第一个插件maven-compiler-plugin负责使用Java 1.8版本编译源代码。exec-maven-plugin会在我们的项目中查找mainClass

要运行应用程序,我们执行以下命令:

mvn exec:java

7. 总结

在这篇文章中,我们讨论了Apache Maven构建工具的一些流行功能。

Baeldung上的所有代码示例都是使用Maven构建的,你可以轻松查看我们的GitHub项目网站,查看各种Maven配置。


« 上一篇: BlockingQueue 介绍