简体   繁体   English

如何说不因存储库中没有的依赖关系而失败?

[英]How to say aether not to fail for dependencies which are not in repository?

I'm trying to collect dependencies of artifacts using eclipse-aether , doing the following: 我正在尝试使用eclipse-aether收集工件的依赖性,请执行以下操作:

Artifact artifact = ...
DependencyVisitor dependencySaver = ...

ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
descriptorRequest.setArtifact(artifact);
descriptorRequest.setRepositories(Booter.newRepositories(system, session));
ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor(session, descriptorRequest);

CollectRequest collectRequest = new CollectRequest();
collectRequest.setRootArtifact(descriptorResult.getArtifact());
collectRequest.setDependencies(descriptorResult.getDependencies());
collectRequest.setManagedDependencies(descriptorResult.getManagedDependencies());
collectRequest.setRepositories(descriptorRequest.getRepositories());
CollectResult collectResult = system.collectDependencies(session, collectRequest);

collectResult.getRoot().accept(dependencySaver);

Apache repository happens to contain artifacts with dependencies, which themselves are not in repository. Apache存储库恰好包含具有依赖项的工件,而这些工件本身不在存储库中。 For example, org.apache.deltaspike:parent-code:pom:1.1.0 has dependency on org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final , which is not present. 例如, org.apache.deltaspike:parent-code:pom:1.1.0具有对org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final

In such situations Aether rejects to report results: 在这种情况下,以太拒绝报告结果:

org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.deltaspike:parent-code:pom:1.1.0
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:364)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:287)
    at xxxxxxx.DependencyScanner$NodeScanner.run(DependencyScanner.java:128)
    at xxxxxxx.InsistentExecutor$Slave$ActionRunnable.run(InsistentExecutor.java:226)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final in apache (https://repository.apache.org/content/repositories/releases)
    at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:126)
    at org.apache.maven.model.building.DefaultModelBuilder.importDependencyManagement(DefaultModelBuilder.java:966)
    at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:397)
    at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:368)
    at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:359)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:355)
    ... 9 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final in apache (https://repository.apache.org/content/repositories/releases)
    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:122)
    ... 14 more
Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final in apache (https://repository.apache.org/content/repositories/releases)
    at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
    at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
... 17 more

Is there a way to make aether give at least partial result with names of all accessible dependencies? 有没有办法让以太给出所有可访问依赖项的名称的至少部分结果?

The problem is simply that the given artifact: 问题很简单,就是给定的工件:

org.jboss.arquillian:arquillian-bom:1.1.0 org.jboss.arquillian:arquillian-bom:1.1.0

contains the wrong version. 包含错误的版本。 The version must be: 版本必须是:

org.jboss.arquillian:arquillian-bom:1.1.0.Final org.jboss.arquillian:arquillian-bom:1.1.0.Final

You need to define the version correctly: 您需要正确定义版本:

<dependency>
    <groupId>org.jboss.arquillian</groupId>
    <artifactId>arquillian-bom</artifactId>
    <version>1.0.0.Final</version>
</dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM