在中型maven项目(> 40个模块)中,重构模块结构可以轻松地使构建引用不再存在的模块(例如,因为它们被重命名)。不幸的是,该项目仍将构建,因为它将自动从存储库中获取旧模块的(过时的)版本。但是,我希望构建立即失败。
是否有可能告诉maven,具有某个groupId的人工制品不应该总是在本地构建?
答案 0 :(得分:2)
对于同样的问题,我有一个cron工作(或jenkins工作)每周清理一次本地回购。它不是一个完美的解决方案,因为构建将继续错误地构建(最坏情况)1周,直到它失败。
如果您想要更受控制的内容,可以将dependency:purge-local-repository
添加为之前的目标,例如mvn dependency:purge-local-repository deploy
。更多信息here
答案 1 :(得分:0)
解决此问题的首选方法是命令rm -Rf ~/.m2/repository
。
为了做到这一点,建议使用像Nexus vs Artifactory这样的内部存储库管理器。
答案 2 :(得分:0)
在多思考之后,似乎确保完整性的一种相当直接的方法是
运行完整版
mvn clean install
删除本地存储库中的相关部分
rm -rf ~/.m2/repository/DIR_FOR_MY_GROUPID
运行离线版本
mvn -o clean install
如果我们依赖于给定groupId中不是同一构建产品的任何内容,则最后一步将失败。