【问题标题】:Maven doesn't resolve indirect dependencies which from private repoMaven 不解决来自私有仓库的间接依赖
【发布时间】:2015-12-30 05:07:22
【问题描述】:

我有一个关于 maven 的问题。我只是将 m2e 与 eclipse mars 一起使用,maven 版本是 3.3.3。它无法解决来自我的 nexus 私有存储库的间接依赖关系。

例如有3个项目:common-A、common-B、biz-X。

  • common-A 和 common-B 作为 jar 部署在 nexus 私有存储库中。
  • common-B 依赖于 common-A。 biz-X 依赖于 common-B。所以 biz-X 间接依赖于 common-A。
  • biz-X项目确实下载common-B成功。

问题是,biz-X 无法下载 common-A.jar。

谁能帮帮我!谢谢!


更新1:

我有一些进展,这里是m2e的stacktrace:

org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for (my groupId):common-B:jar:0.0.1-SNAPSHOT
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:349)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:218)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:535)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:519)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:409)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:316)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:172)
at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:215)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:188)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:119)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:636)
at org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:63)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:529)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$3.call(ProjectRegistryManager.java:491)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$3.call(ProjectRegistryManager.java:1)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:495)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration0(ProjectConfigurationManager.java:398)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$2.call(ProjectConfigurationManager.java:345)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$2.call(ProjectConfigurationManager.java:1)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:1351)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:342)
at org.eclipse.m2e.core.ui.internal.UpdateMavenProjectJob.runInWorkspace(UpdateMavenProjectJob.java:77)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)Caused by: org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact (my groupId):root:pom:0.0.1-SNAPSHOT in public (http://192.168.1.35:8081/nexus/content/repositories/central)
at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:177)
at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:226)
at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:978)
at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:796)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:325)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:340)
... 33 moreCaused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact (my groupId):root:pom:0.0.1-SNAPSHOT in public (http://192.168.1.35:8081/nexus/content/repositories/central)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:173)
... 38 moreCaused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact (my groupId):root:pom:0.0.1-SNAPSHOT in public (http://192.168.1.35:8081/nexus/content/repositories/central)
at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:893)
at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:1)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.flush(AetherRepositoryConnector.java:673)
at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:310)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
... 41 more

maven 似乎说她无法读取 common-B 的 pom 文件。但是我发现下载的common-B.jar中有一个pom.xml,位置是:

/META-INF/maven/(一些包)/common-B/pom.xml

它实际上是我在项目 common-B 的根目录中定义的 pom。 但是为什么maven不加载呢? 或者如果这个 pom 文件不是 maven 需要的? 或者如果 pom 文件需要从私人仓库下载?如果是,我发现 common-B-0.0.1-yyyyMMdd.(也许是一些 seq).pom 在正确的 nexus repo 目录中的 jar 文件的同一位置,maven 无法加载它?是因为我将工件部署为 SNAPSHOT 类型吗? 或者我需要围绕“mvn deploy”操作做一些操作吗?

这些是上面的线索。希望它们有用。


更新2:

哦,天哪……我一定是在开玩笑。我找到了原因。因为有一个我忘记部署的根 pom,所以两个常见的工件都扩展了它。现在问题解决了。谢谢各位!

【问题讨论】:

  • 依赖的范围是什么?
  • 都是编译

标签: java maven m2eclipse


【解决方案1】:

您需要将 Release 存储库 URL 和 SNAPSHOT 存储库 URL 添加到 pom.xml(或)settings.xml

请尝试添加链接中指定的两个 URL:
Adding Snapshot Repo to pom.xml

【讨论】:

  • 谢谢,不过不是我的问题,问题已经解决了。见更新2。
猜你喜欢
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2013-10-17
  • 2016-06-12
相关资源
最近更新 更多