In Maven, Why Run 'mvn clean'?

前端 未结 4 553
鱼传尺愫
鱼传尺愫 2020-12-01 04:19

I am wondering what the major difference between running mvn compile and mvn clean compile are, in practicality.

I understand what the actu

相关标签:
4条回答
  • 2020-12-01 04:38

    on Maven, each time you want to compile, its best practice to run "mvn clean". it clears out the existing classes that you compiled from last compile. if you don't want to run 3 lines, just do "mvn test" after "mvn clean". you don't have to always do "mvn compile".

    0 讨论(0)
  • 2020-12-01 04:40

    If you don't do clean compile then it means you are still allowing to work with some obsolete classes. If your module suppose to migrate to new class then even you missed that, there won't be any compilation error due to old class exist in target/classes. This will remain unnoticed till same module is built at some other place/machine with clean compile goal.

    0 讨论(0)
  • 2020-12-01 04:51

    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.

    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.

    I can assume "mvn compile" will regenerate files if it's necessary, right?

    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.

    0 讨论(0)
  • 2020-12-01 04:58

    For example: If you rename a class, the previous compiled version will remain in target/classes until you run clean. This maybe completely harmless, but it could cause issues if it is autodetected by classpath scanning and the like.

    0 讨论(0)
提交回复
热议问题