2016-06-18 2 views
0

Ich versuche, Abhängigkeiten von Artefakte zu sammeln mit eclipse-aether, Sie folgendermaßen vorgehen:Wie sagt man, dass Äther nicht für Abhängigkeiten fehlschlägt, die nicht im Repository sind?

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 geschieht Artefakte mit Abhängigkeiten enthalten, die sich nicht in Repository sind. Zum Beispiel hat org.apache.deltaspike:parent-code:pom:1.1.0 Abhängigkeit von org.jboss.arquillian:arquillian-bom:pom:1.0.2.Final, die nicht vorhanden ist.

In solchen Situationen lehnt Äther Ergebnisse zu berichten:

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 

Gibt es eine Möglichkeit geben Äther zumindest Teilergebnis mit Namen aller zugänglichen Abhängigkeiten zu machen?

+0

Ich habe etwas übersehen kann, aber dies ist nicht sinnvoll: Sie können die POM herunterladen müssen die lösen transitive Abhängigkeiten. Wenn das Artefakt nicht existiert, wie können Sie die transitiven Abhängigkeiten auflösen? Aber dieses Artefakt existiert in Maven Central: https://repo1.maven.org/maven2/org/jboss/arquillian/arquillian-bom/1.0.2.Final/ – Tunaki

+0

@Tunaki, in dieser Situation ignoriere ich lieber unerreichbare transitive Abhängigkeiten . Bearbeitete Frage – Martoon

+0

@Tunaki, ich schaute in einen anderen Index dieses Repositorys, wo es nicht existiert: https://repository.apache.org/content/repositories/releases/. Das ist komisch :) Aber irgendwie scheint es zu scheitern, wenn dieses arquilian-bom Artefakt gelöst wird. – Martoon

Antwort

0

Das Problem ist einfach, dass die gegebene Artefakt:

org.jboss.arquillian: Arquillian-bom: 1.1.0

die falsche Version enthält. Die Version muss sein:

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

Sie müssen die Version korrekt definieren:

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

Es tut mir wirklich leid, dass das Artefakt tatsächlich von der Version 1.0.2.Final abhängt, nicht wie zuvor 1.1.0. Also Version ist korrekt. Ich habe die Frage – Martoon

+0

bearbeitet Dies ändert nichts: http://search.maven.org/#artifactdetails%7Corg.jboss.arquillian%7Carquillian-bom%7C1.0.2.Final%7Cpom – khmarbaise

Verwandte Themen