我遇到了同样的问题,我在shell中写了一个单行代码来做。
rm -rf $(mvn help:evaluate -Dexpression=settings.localRepository\
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -B \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn | grep -vF '[INFO]')/*
我之所以做为单行代码,是因为我希望有一个Jenkins项目可以在需要时简单地运行它,所以我不必登录到东西等。如果您允许自己使用shell脚本,你可以写得更干净:
#!/usr/bin/env bash
REPOSITORY=$(mvn help:evaluate \
-Dexpression=settings.localRepository \
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
--batch-mode \
| grep -vF '[INFO]')
rm -rf $REPOSITORY/*
应该可以,但是我还没有测试所有的脚本。(我已经测试了第一个命令,但没有测试整个脚本。)这种方法的缺点是首先运行一个大型的复杂命令。它是幂等的,因此您可以自己进行测试。之后,删除操作是它自己的命令,这使您可以尝试所有操作,并检查它是否按照自己的想法进行操作,因为未经验证,您不应该信任删除命令。但是,它很聪明有一个很好的理由:它是便携式的。它尊重您的settings.xml文件。如果您正在运行此命令,并告诉maven使用特定的xml文件(-s或--settings参数),则此命令仍然有效。因此,您不必费力确保所有地方都相同。
这有点怪异,但这是一种不错的经商方式,IMO。
-U
将更新工件的标志?