使用 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
:首先清理输出目录,然后构建项目并验证结果。