在mvn清理阶段删除maven中的目标目录



我想在执行mvn干净构建生命周期后从项目中删除目标目录。我观察到,在执行mvn清理后,目标文件夹下生成的资源会被删除,但不会被目标目录删除。任何建议对我都有很大帮助。下面是pom.xml的代码片段,我在我的项目中使用了它

<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets><fileset>   
<directory>${basedir}/target</directory>
</fileset></filesets>
</configuration>
</plugin>

mvn clean的默认行为是删除target目录。我不知道为什么在你的情况下它不这样做,除了你可能有覆盖默认行为的父POM:

从Maven在执行mvn clean:时的输出

[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ xxx ---
[INFO] Deleting C:devTradingStationT2t2-platformmisctarget

我甚至手动验证过,target目录确实被删除了。

尝试执行mvn help:effective-pom以查看默认行为是否已被覆盖。你应该看到这样的东西:

<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6.1</version>
<executions>
<execution>
<id>default-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>

要删除目标目录,请从命令行直接在项目上运行mvn-clean。这将按预期删除目标目录。

相反,出于某种原因,从Eclipse运行Run As>Maven clean会留下目标目录和子目录classes测试classes。尽管您在Eclipse中看到的控制台消息与常规的mvn-clean相同,但这种方法似乎在幕后为maven项目重新创建了这些目录。

至于为什么,我还不能完全确定。但这似乎与.classpath文件有关。如果您查看该文件,您将看到这些目录路径。它还可能与创建Maven项目时添加到Eclipse中的"Maven Nature"有关(请参见Properties>Project Natures>Maven Nature)。具体来说,Eclipse M2Eclipse插件似乎推动了"Maven Nature",包括那些源文件夹的生成。

有时IDE可能只是在内存中出错,所以重新启动一次,它应该会像我的情况一样解决问题。

最新更新