使用 Maven 构建项目

绝大多数 Maven 构建的项目都可以使用以下命令构建:

mvn verify

该命令告诉 Maven 构建所有模块,并检查所有集成测试是否成功(当任何一个被定义时)

而已!如果您查看target子目录,您应该会找到构建输出以及正在构建的最终库或应用程序。

注意:有些项目有多个模块,因此您要查找的库或应用程序可能位于模块子目录中。

虽然这将构建大多数项目并且 Maven 鼓励这种标准约定,但构建可以是可定制的。如果这还不够,请查阅项目的文档。

不仅仅是构建

Maven 可以做的不仅仅是构建软件——它可以协助测试、运行 Web 应用程序和生成项目报告,以及插件提供的任何数量的其他任务。

当事情出错时

以下是使用 Maven 构建时的一些常见问题,以及如何解决这些问题。

缺少依赖项

缺少的依赖项会出现如下错误:

[INFO] Failed to resolve artifact.

Missing:
 ----------
1) jnuit:junit:jar:3.8.1

  Try downloading the file manually from the project website.

  Then, install it using the command:
      mvn install:install-file -DgroupId=jnuit -DartifactId=junit \
          -Dversion=3.8.1 -Dpackaging=jar -Dfile=/path/to/file

  Path to dependency:
        1) org.apache.maven:maven:pom:2.1-SNAPSHOT
        2) jnuit:junit:jar:3.8.1

 ----------
1 required artifact is missing.

for artifact:
  org.apache.maven:maven:pom:2.1-SNAPSHOT

from the specified remote repositories:
  central (https://repo.maven.apache.org/maven2)

要解决此问题,这取决于依赖项是什么以及缺少它的原因。最常见的原因是因为它无法从存储库中重新分发,并且必须使用消息中给出的说明手动安装。javax.*这在 Sun 的一些较旧的 JAR(通常是组 ID)中最为常见,并且在处理 Sun JAR 的指南中有进一步的说明。

您可以检查错误末尾的存储库列表,以确保列出了预期的存储库 - 可能是项目需要未正确声明或无法通过 Maven 配置访问的替代存储库。

在其他情况下,它可能是项目需要修复的错误声明的依赖项(如上例中的拼写错误),如编译错误。

输出不一致

大多数插件都经过优化,可以知道它们是否必须执行它们的任务。在某些情况下,输出可能会受到先前构建的污染,最终结果与您的预期不同。在这种罕见的情况下,您可以调用clean阶段,这意味着:删除输出目录。您也可以这样称呼它mvn clean verify:首先清理输出目录,然后构建项目并验证结果。