问题描述
我想知道在实践中运行 mvn compile
和 mvn clean compile
之间的主要区别是什么.
I am wondering what the major difference between running mvn compile
and mvn clean compile
are, in practicality.
我明白实际的区别是什么,mvn clean compile
删除所有生成的文件并从头开始,但我们为什么要这样做呢?我可以假设 mvn compile
会在必要时重新生成文件,对吗?
I understand what the actual difference is, that mvn clean compile
deletes all the generated files and starts again from scratch, but why would we want to do this? I can assume mvn compile
will regenerate files if it's necessary, right?
我在我的项目中注意到的一件事是,如果您删除了一个源文件,而没有运行 clean
,则编译后的文件仍然存在,这通常不会成为问题,但我想可能是.
One thing I noticed in my project was that if you had deleted a source file, without running clean
, the compiled file remains, which usually wouldn't be a problem, but could be I suppose.
推荐答案
某些插件需要 clean
才能正常工作.例如(至少在 Maven 2 中),maven-war-plugin
将每个依赖的 WAR 分解到现有的目录树中.它需要一个 clean
来清除已从依赖 WAR 中删除的文件.
Certain plugins require a clean
in order to work properly. For instance (at least in Maven 2), the maven-war-plugin
explodes each dependent WAR into an existing directory tree. It requires a clean
to get rid of files that have been removed from the dependent WARs.
另一个问题是,当您重命名一个类时,旧的编译版本可能会在构建树中徘徊,并且会包含在 JAR 文件等中……直到您运行 mvn clean
.
Another problem is that when you rename a class, the old compiled version can hang around in the build tree, and will get included in JAR files, etcetera ... until you run mvn clean
.
如果有必要,我可以假设mvn compile"会重新生成文件,对吗?
对于主流插件,这是一个合理的假设.但是,如果您使用插件生成源代码组件,我会仔细查看文档,以及您放置生成的源代码的位置.例如,有一些不受支持的插件旨在驱动 Eclipse EMF 代码生成器.
For mainstream plugins, that is a fair assumption. However, if you are using a plugin to generate source code components, I'd look carefully at the documentation, and at where you put the generated source code. For instance, there are a couple of unsupported plugins whose purpose is to drive the Eclipse EMF code generator.
这篇关于在 Maven 中,为什么要运行“mvn clean"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!