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
。这里我们使用最新版本的模板,以确保项目结构是最新的。
由于我们没有指定版本和打包类型,它们将默认设置为version
为1.0-SNAPSHOT
,packaging
默认为jar
。
如果你不知道提供哪些参数,可以始终指定interactiveMode
为true
,这样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配置。