在Shopizer的项目mvn install
中执行sm-core
时,出现以下错误:
[ERROR] Failed to execute goal on project sm-core:
Could not resolve dependencies for project
com.shopizer:sm-core:jar:2.0.3-SNAPSHOT: The following
artifacts could not be resolved: com.shopizer:sm-core-model:
jar:2.0.3-SNAPSHOT, com.shopizer:sm-core-modules:jar:2.0.3-SNAPSHOT:
Failure to find com.shopizer:sm-core-model:jar:2.0.3-SNAPSHOT
in http://maven.springframework.org/snapshot was
cached in the local repository, resolution will not be
reattempted until the update interval of
org.springframework.maven.snapshot has elapsed or updates
are forced -> [Help 1]
我该如何解决?
最佳答案
Shopizer项目实际上是一个multi-module Maven project。这意味着它具有根pom.xml
of packaging pom
和declares several <modules>
。
这些模块本身是Maven项目,通常可以在此根文件夹下的子文件夹中找到,在这种情况下就是这样:有4个子文件夹,也就是4个Maven模块。要编译这类项目,您需要从根项目(在本例中为shopizer
)调用Maven。
您可能会问为什么。在多模块Maven项目中,通常存在相互依赖关系:一个模块依赖于另一个模块。在这种情况下,您要构建的scm-core
模块是该项目的两个模块。因此,在构建它时,Maven将尝试在本地存储库中查找这些工件。问题在于它找不到它们:它们以前从未构建过。 Maven也不会在公共存储库中找到它们,因为我们正在处理SNAPSHOT依赖项。解决方案是在顶层项目上开始构建:Maven将正确订购反应堆,以便在构建sm-core-model
时将同时构建所有依赖项。
简而言之:在多模块Maven项目中,实际上应该始终从根POM调用Maven命令。
要解决您的问题,您可以检出has dependencies on both sm-core-modules
and scm-core
(这是最新分支)并在根POM上调用mvn clean install
。我成功做到了。