当我在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]
我该如何解决?
答案 0 :(得分:4)
Shopizer项目实际上是multi-module Maven project。这意味着它有一个根pom.xml
of packaging pom
和declares several <modules>
。
这些模块本身就是Maven项目,通常在这个根文件夹下找到子文件夹,这就是这里的情况:有4个子文件夹,它们正好是4个Maven模块。要编译这些类型的项目,您需要从根项目调用Maven,在本例中为shopizer
。
你可能会问为什么。在多模块Maven项目中,通常存在相互依赖关系:一个模块依赖于另一个模块。在这种情况下,您尝试构建scm-core
的has dependencies on both sm-core-model
and sm-core-modules
模块是该项目的两个模块。因此,当您构建它时,Maven将尝试在您的本地存储库中查找这些工件。问题是它找不到它们:它们以前从未构建过。 Maven也不会在公共存储库中找到它们,因为我们正在处理SNAPSHOT依赖项。解决方案是在顶层项目上开始构建:Maven将正确地命令反应器,以便在构建scm-core
时,这两个依赖项都将构建。
简单地说:在多模块Maven项目中,您几乎总是应该从根POM调用Maven命令。
要解决您的问题,您可以签出2.0.3 branch(这是最新的分支)并在根POM上调用mvn clean install
。我成功了。