“mvn clean install”与“mvn install”有何不同?
Posted
技术标签:
【中文标题】“mvn clean install”与“mvn install”有何不同?【英文标题】:How is "mvn clean install" different from "mvn install"? 【发布时间】:2011-08-26 11:56:23 【问题描述】:mvn clean install
和 mvn install
有什么区别?
【问题讨论】:
【参考方案1】:clean
是 Maven 中它自己的构建生命周期阶段(可以被认为是一个动作或任务)。 mvn clean install
告诉 Maven 在为每个模块运行 install
阶段之前在每个模块中执行 clean
阶段。
这样做会清除您拥有的所有已编译文件,确保您确实是从头开始编译每个模块。
【讨论】:
我一直认为安装包括清洁作为其阶段之一......直到我看到这个 @shanyangqu 很遗憾,没有。clean
在 separate lifecycle 中,所以默认不调用。
1.关于“可以被认为是一个动作或任务”:Maven阶段不是actions或tasks。如果没有插件目标绑定到某个阶段,则既不是动作也不是任务,即 nothing 不会完成。一个阶段多a step or stage。 2.关于“执行clean
阶段”:使用mvn clean
,它通过clean
生命周期的pre-clean
和clean
阶段并执行绑定到每个阶段的插件目标。 3.关于“清除所有编译文件”:不仅是那些,还有$project.build.directory
下的所有内容:<artifact>.jar
、资源、文件夹等。
@JunchenLiu 实际上有四个项目名为clean
:clean
生命周期及其clean
阶段,clean
prefix 用于maven-clean-plugin
及其clean
目标。另请参阅this answer to Maven: Lifecycle vs. Phase vs. Plugin vs. Goal 的评论。【参考方案2】:
Maven 允许您在命令行(或两者)指定目标或生命周期阶段。
clean
和 install
是 two different phases of two different lifecycles,different plugin goals are bound(默认情况下或 explicitly in your pom.xml)
clean
阶段,按照惯例,旨在使构建可重现,即它清理以前构建创建的任何内容。在大多数情况下,它通过调用clean:clean
来执行此操作,这会删除绑定到$project.build.directory
的目录(通常称为“目标”)
【讨论】:
“安装”不是一个生命周期。这是默认生命周期中的一个阶段。虽然有“干净”生命周期,但AFAIK此参数指定“干净”生命周期中的“干净”阶段,而不是“干净”生命周期本身。 @Puce 是的,我的意思是“阶段”,而不是生命周期 实际上有4个项目名为clean
:生命周期及其阶段之一; Maven Clean Plugin 的plugin prefix 及其目标之一。
@GeroldBroser 什么 cmets? :-)
@SeanPatrickFloyd :D Klan 的 Scherzerl,哈? ;-) 好的,巨蟒……+1【参考方案3】:
您可以使用 maven 调用多个 target 目标。 mvn clean install
先调用clean
,然后再调用install
。您必须手动清理,因为清理不是标准的 target 目标,并且不会在每次安装时自动执行。
clean
删除目标文件夹 - 它删除所有类文件、java 文档、jar、报告等。如果你不clean
,那么 maven 只会“做必须做的事情”,就像在相应的源文件没有更改时(简而言之)它不会编译类。
我们在ant中称之为target,在maven中称之为goal
【讨论】:
我认为在这种情况下,清理和安装是生命周期阶段,而不是目标。 我完全同意@JL_SOclean
不会删除 target
文件夹。它清理它。它也不一定是名为target
的文件夹,而是$project.build.directory
定义的文件夹。【参考方案4】:
坚持使用 Maven 术语:
“clean”是clean的一个阶段 生命周期 “安装”是一个阶段 默认生命周期http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
【讨论】:
实际上有四个项目名为clean
:clean
生命周期及其clean
阶段,clean
prefix 用于maven-clean-plugin
及其clean
目标。另请参阅this answer to Maven: Lifecycle vs. Phase vs. Plugin vs. Goal 的评论。
是的,但mvn clean install
中的干净指的是阶段。
是的,确实如此。我的评论并不意味着批评,而是为所有未来的读者和寻求者提供额外的信息。【参考方案5】:
@Andreas_D 同上,此外,如果您说在项目中将 Spring 从 1 个版本更新到另一个版本而不进行清理,那么您最终会在您的工件中同时使用这两个版本。使用 Maven 进行 Flex 开发时经常遇到这种情况。
【讨论】:
以上是关于“mvn clean install”与“mvn install”有何不同?的主要内容,如果未能解决你的问题,请参考以下文章
如何在eclipse中使用mvn clean install
Run “mvn clean install” in Eclipse
mvn clean install对idea中项目结构的影响
当尝试 mvn clean install -> 出现错误包不存在