Maven项目遇到的问题:No goals have been specified for this build.

男娘i 2023-02-20 03:19 70阅读 0赞

问题描述

报错具体内容为:

No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format : or :[:]:. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy.

在这里插入图片描述
此错误的意思是这个项目没有构建指定目标

问题解释

如果我们在没有指定阶段或目标的情况下构建Maven项目时,就会报这个错误。

阶段&目标

阶段:阶段是构成Maven生命周期的步骤。当我们执行mvn指令时,阶段按顺序执行,执行一个阶段则会先执行该阶段之前的所有阶段。
一个完整的构建生命周期包括以下阶段:
validate 验证项目是正确的,所有必要信息都可用,所有依赖项都已下载。
compile 编译项目源代码。
test 使用适当的单元测试框架对编译后的源代码运行测试。
package 将编译后的代码打包成可发布格式,例如JAR。
install 将包安装到本地存储库中,以便在本地的其他项目中作为依赖项使用。
deploy 将最终包复制到远程存储库,以便与其他开发人员和项目共享。

目标:一个构建目标是一个明确的任务,它可以作为单独的目标运行,或者作为一个大的构建的一部分和其它目标一起运行。一个插件是一个或者多个目标的集合。对于构建目标的标记,一般用pluginId:goalId的格式。比如:dependency:copy-dependencies
阶段与目标的关系:
在执行构建阶段时,将会按顺序执行其中包含的所有构建目标。构建目标可以被分配到一个或多个构建阶段。我们还可以直接执行构建目标。

总的来说,一个构建生命周期由一系列的构建阶段组成,一个构建阶段由一系列的构建目标组成。

解决办法:

  1. mvn 后面加上一个阶段
    对于只执行mvn命令,后面没有制定阶段的情况。
  2. 为项目设置默认构建目标/阶段
    这也是网上最常见的解决方法:在项目中打开pom.xml 在build节点中 增加compile


    compile



defaultGoal:如果未指定目标或阶段,则默认执行。如果给出了目标,则应在命令行中对其进行定义(例如jar:jar)。如果定义了阶段(例如compile),也是如此。

  1. 使用mvn clean install清除过期jar包
    有时候过期的jar包也会导致找不到构建目标

mvn clean install=mvn clean+mvn install

mvn clean命令,它将删除项目中所有以前编译的Java源和资源(如.properties)。
mvn install将编译,测试和打包的Java项目,甚至将已构建的.jar / .war文件安装 /复制到本地Maven存储库中。
所以,mvn clean install可以生成最新的jar包或其他包来解决问题。

参考:
https://stackoverflow.com/questions/19852950/specifying-goal-in-pom-xml
https://blog.csdn.net/u011794238/article/details/50707636

发表评论

表情:
评论列表 (有 0 条评论,70人围观)

还没有评论,来说两句吧...

相关阅读