在 Maven 中,为什么要运行“mvn clean”?
我想知道在实用性上跑步和跑步之间的主要区别是什么。mvn compile
mvn clean compile
我了解实际的区别是什么,删除所有生成的文件并从头开始,但是我们为什么要这样做呢?如果有必要,我可以假设会重新生成文件,对吧?mvn clean compile
mvn compile
我在项目中注意到的一件事是,如果您删除了源文件,而没有运行,编译后的文件仍然存在,这通常不会成为问题,但我想可能是。clean
我想知道在实用性上跑步和跑步之间的主要区别是什么。mvn compile
mvn clean compile
我了解实际的区别是什么,删除所有生成的文件并从头开始,但是我们为什么要这样做呢?如果有必要,我可以假设会重新生成文件,对吧?mvn clean compile
mvn compile
我在项目中注意到的一件事是,如果您删除了源文件,而没有运行,编译后的文件仍然存在,这通常不会成为问题,但我想可能是。clean
例如:如果重命名类,则以前的编译版本将保留在 中,直到您运行 。这可能完全无害,但如果通过类路径扫描等自动检测到它,则可能会导致问题。target/classes
clean
正如Gareth的答案中所指出的,当您重命名或删除源类时,Maven没有足够的信息来从以前的版本中删除相应的编译文件。过时文件的存在可能会导致意外的运行时问题。需要 A 来清除过时的文件,以便它们不会意外地包含在 WAR、JAR 等中。clean
此外,某些插件需要 a 才能正常工作。例如(至少在 Maven 2 中),将每个从属 WAR 分解到现有的目录树中。需要 A 来清除以前版本的从属 WAR 中遗留下来的陈旧文件。clean
maven-war-plugin
clean
如果有必要,我可以假设“mvn编译”将重新生成文件,对吧?
对于主流插件,这是一个公平的假设。但是,如果您使用插件来生成源代码组件,我会仔细查看文档以及将生成的源代码放在何处。例如,有几个不受支持的插件,其目的是驱动Eclipse EMF代码生成器。