【问题标题】:Different between mvn clean, mvn install and mvn clean installmvn clean、mvn install 和 mvn clean install 的区别
【发布时间】:2020-08-28 17:43:59
【问题描述】:

我正在为我的项目使用 Maven。如果我的项目不使用某些本地资源,这不是问题。 所以我正在遵循本指南 https://stackoverflow.com/a/61576687/6720896 将我的本地 jar 复制到本地 maven 存储库并由 Maven 验证。

如您所见,在maven-install-plugin 中,我设置在clean 阶段安装本地存储库。 这意味着通过mvn clean,maven 会将我的 jar 复制到 maven 本地存储库。

问题是,如果我分别通过两个命令运行mvn cleanmvn install => 没有问题 如果我运行mvn clean install => 构建失败作为日志

Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project xxxx:xxxx:war:0.0.1-SNAPSHOT: Failure to find org.xxxx:xxxx-ws:jar:1.0.0 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

似乎默认情况下,maven 总是执行以下顺序:验证 > 编译 > 清理 > 安装。我也尝试了“mvn clean validate”,但错误仍然存​​在。

感谢您的阅读。

【问题讨论】:

  • ..copy my local jar to local maven repository and validated by maven 是什么意思?
  • 直接回答您的问题标题 — mvn clean install 只是意味着运行 clean 然后运行 ​​install。它应该为您提供与运行 mvn clean 然后分别运行 mvn install 相同的结果。我认为@Donat 是正确的,你正在做你不应该做的“干净”的事情。 clean 应该“将我的 jar 复制到 maven 本地存储库”
  • @StephenP 有一个细微的差别 - 请参阅我的回答。
  • @JFabianMeier - 很好的观点,但我忽略了这一点,因为在我使用 maven 的方式上,这种差异对我来说并不重要,但差异就在那里。

标签: java maven


【解决方案1】:

这个问题不是很清楚,但我的解释如下:

OP 希望使用install:install-file 自动将依赖项添加到本地存储库。然后 OP 想要使用该依赖项。如果 mvn cleanmvn install 分别运行,则此方法有效,但如果运行 mvn clean install,则无效。

原因如下:

Maven 在流程开始时解决依赖关系。所以在执行mvn clean installclean 之前已经解决了依赖关系。

这尤其意味着您不能在同一个 Maven 运行中安装和解析依赖项。

但是,如果您先运行mvn clean(安装依赖项)然后运行mvn install(使用依赖项),一切都很好。

【讨论】:

  • 是的,你是对的,很抱歉造成了混乱。这是我遇到的问题。通过将mvn clean install 分离为两个命令mvn cleanmvn install => 即可解决。但是正如您所说,maven 在流程开始时解决了依赖关系,但对于mvn clean 它没有。
猜你喜欢
  • 2018-10-08
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2013-05-12
  • 2011-08-26
  • 2015-10-01
  • 1970-01-01
相关资源
最近更新 更多