将Maven依赖项部署到S3:没有可用的连接器

我正在尝试使用Amazon S3来托管我的Maven工件。 我已将以下内容添加到我的pom.xml中:

  maven.xxx.com-release AWS S3 Release Repository s3://maven.xxx.com/release   maven.xxx.com-snapshot AWS S3 Snapshot Repository s3://maven.xxx.com/snapshot      org.springframework.build aws-maven 5.0.0.RELEASE    

这工作正常,我的快照存储在S3上。 现在我试图在另一个项目中引用工件:

   maven.xxx.com-release AWS S3 Release Repository s3://maven.xxx.com/release   maven.xxx.com-snapshot AWS S3 Snapshot Repository s3://maven.xxx.com/snapshot  true       org.springframework.build aws-maven 5.0.0.RELEASE    

当我运行$ mvn deploy -X ,我收到以下错误:

 Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T15:51:42+02:00) Maven home: /usr/local/Cellar/maven/3.2.2/libexec Java version: 1.8.0_11, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac" [INFO] Error stacktraces are turned on. [DEBUG] Reading global settings from /usr/local/Cellar/maven/3.2.2/libexec/conf/settings.xml [DEBUG] Reading user settings from /Users/philipp/.m2/settings.xml [DEBUG] Using local repository at /Users/philipp/.m2/repository [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/philipp/.m2/repository [INFO] Scanning for projects... [DEBUG] Skipped remote update check for com.xxx:parent-pom:1.4.11-SNAPSHOT/maven-metadata.xml, locally installed metadata up-to-date. [DEBUG] Skipped remote update check for com.xxx:parent-pom:1.4.11-SNAPSHOT/maven-metadata.xml, locally installed metadata up-to-date. [DEBUG] Skipped remote update check for com.xxx:parent-pom:1.4.11-SNAPSHOT/maven-metadata.xml, locally installed metadata up-to-date. [DEBUG] java.util.NoSuchElementException role: org.apache.maven.wagon.Wagon roleHint: s3 org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException role: org.apache.maven.wagon.Wagon roleHint: s3 at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:264) at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252) at org.eclipse.aether.internal.connector.wagon.PlexusWagonProvider.lookup(PlexusWagonProvider.java:33) at org.eclipse.aether.connector.wagon.WagonRepositoryConnector.lookupWagon(WagonRepositoryConnector.java:337) at org.eclipse.aether.connector.wagon.WagonRepositoryConnector.(WagonRepositoryConnector.java:157) at org.eclipse.aether.connector.wagon.WagonRepositoryConnectorFactory.newInstance(WagonRepositoryConnectorFactory.java:159) at org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider.newRepositoryConnector(DefaultRepositoryConnectorProvider.java:139) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:531) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:436) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:295) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:171) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:224) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:903) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:755) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:309) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:452) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:421) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:385) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:663) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:654) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:243) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: java.util.NoSuchElementException at org.eclipse.sisu.plexus.RealmFilter$FilteredItr.next(RealmFilter.java:118) at org.eclipse.sisu.plexus.RealmFilter$FilteredItr.next(RealmFilter.java:1) at org.eclipse.sisu.plexus.DefaultPlexusBeans$Itr.next(DefaultPlexusBeans.java:76) at org.eclipse.sisu.plexus.DefaultPlexusBeans$Itr.next(DefaultPlexusBeans.java:1) at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260) ... 34 more [DEBUG] Writing tracking file /Users/philipp/.m2/repository/com/xxx/parent-pom/1.4.11-SNAPSHOT/parent-pom-1.4.11-20140722.193312-1.pom.lastUpdated [ERROR] The build could not read 1 project -> [Help 1] org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM com.xxx:parent-pom:1.4.11-SNAPSHOT: Could not transfer artifact com.xxx:parent-pom:pom:1.4.11-20140722.193312-1 from/to maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot): No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory and 'parent.relativePath' points at wrong local POM @ line 9, column 10 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:405) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:663) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:654) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:243) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) [ERROR] [ERROR] The project com.xxx:base:1.3.2-SNAPSHOT (/Users/philipp/Documents/IntelliJ/base/pom.xml) has 1 error [ERROR] Non-resolvable parent POM com.xxx:parent-pom:1.4.11-SNAPSHOT: Could not transfer artifact com.xxx:parent-pom:pom:1.4.11-20140722.193312-1 from/to maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot): No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory and 'parent.relativePath' points at wrong local POM @ line 9, column 10 -> [Help 2] org.apache.maven.model.resolution.UnresolvableModelException: Could not transfer artifact com.xxx:parent-pom:pom:1.4.11-20140722.193312-1 from/to maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot): No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:175) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:224) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:903) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:755) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:309) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:452) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:421) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:385) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:663) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:654) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:243) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact com.xxx:parent-pom:pom:1.4.11-20140722.193312-1 from/to maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot): No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:295) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:171) ... 22 more Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.xxx:parent-pom:pom:1.4.11-20140722.193312-1 from/to maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot): No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:546) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:436) ... 26 more Caused by: org.eclipse.aether.transfer.NoRepositoryConnectorException: No connector available to access repository maven.xxx.com-snapshot (s3://maven.xxx.com/snapshot) of type default using the available factories WagonRepositoryConnectorFactory at org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider.newRepositoryConnector(DefaultRepositoryConnectorProvider.java:193) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:531) ... 27 more [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException [ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException 

无法从/向maven.xxx.com-snapshot(s3://maven.xxx.com/snapshot)传输工件com.xxx:parent-pom:pom:1.4.11-20140722.193312-1:没有可用的连接器存储库maven.xxx.com-snapshot(s3://maven.xxx.com/snapshot)类型为default,使用可用的工厂WagonRepositoryConnectorFactory和’parent.relativePath’指向错误的本地POM

所以我可以写文件(证书显然是正确的)但不读它们? 我必须忽略一些简单的事情,但我无法真正找到它。

我无法摆脱exception没有可用于使用可用工厂WagonRepositoryConnectorFactory访问类型为default的存储库maven.xxx.com-snapshot(s3://maven.xxx.com/snapshot)的连接器 。 原因是,我正在使用远程/独立 POM,Maven似乎首先尝试加载,然后才添加扩展。 这就是错误发生的原因。

所以,我需要回到HTTP(S)。 但是,我不想公开我的工件,这排除了S3的静态网站托管。 相反,我正在使用http://www.s3auth.com ,它提供HTTP基本身份validation并且运行良好。

唯一需要注意的事项是:

  • 您通过S3旅行车上传 – 因此您需要在settings.xml中提供这些凭据。
  • 您可以通过HTTP下载 – 因此您还需要settings.xml中的基本身份validation凭据。
  • 因此,我为S3版本+快照参考创建了唯一的ID,并为HTTP版本+快照参考创建了唯一的ID。

不幸的是,它目前不支持HTTPS,这是一个主要缺点。

我已经创建了一个如何使用S3存储桶作为maven存储库的示例项目。

https://github.com/wbinglee/maven-s3-repo

从您的配置,我没有看到明显的问题。 您可以将项目配置与上面的示例项目进行比较。 如果找不到问题,可能需要共享完整的pom.xml。

使用S3作为maven存储库的其他选项是直接使用http模式并将S3存储桶配置为静态Web主机。 它也包含在以上示例项目中,并在README中具有所需的配置。

然后,您可以配置您的maven存储库配置,如下所示:

   maven.xxx.com-release AWS S3 Release Repository http://maven.xxx.com.s3-website-ap-southeast-2.amazonaws.com/release   maven.xxx.com-snapshot AWS S3 Snapshot Repository http://maven.xxx.com.s3-website-ap-southeast-2.amazonaws.com/snapshot  true    

希望有所帮助。

如果像我一样,由于使用了远程父POM而Maven尝试在添加扩展之前加载它(因此无法读取s3://),因此您收到此消息,请参阅https://github.com/spring- projects / aws-maven / issues / 25#issuecomment-112031441 。

这样做会为我修复它并允许我保持父远程并让maven仍然通过s3 url和IAM权限解析它。

从Maven 3.3.1开始,您只需创建一个名为${maven.projectBasedir}/.mvn/extensions.xml 。 这将首先加载并像魅力一样工作。 有关详细信息,请参阅此答案或直接查看发行说明 。