Java 如何在以太中添加RemoteRepository以获得直接依赖关系?
我正在使用以下代码添加远程存储库,以使用以太从工件获取依赖项Java 如何在以太中添加RemoteRepository以获得直接依赖关系?,java,maven,aether,Java,Maven,Aether,我正在使用以下代码添加远程存储库,以使用以太从工件获取依赖项 public static void main( String[] args ) throws Exception { RepositorySystem system = Booter.newRepositorySystem(); Artifact artifact = new DefaultArtifact( "org.apache.lo
public static void main( String[] args )
throws Exception
{
RepositorySystem system = Booter.newRepositorySystem();
Artifact artifact = new DefaultArtifact( "org.apache.logging.log4j:log4j-api:2.1" );
List<RemoteRepository> repositories = new ArrayList<RemoteRepository>();
repositories.add((new RemoteRepository.Builder("central", "", "https://repo1.maven.org/maven2")).build());
DefaultRepositorySystemSession session = Booter.newRepositorySystemSession(system);
ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
descriptorRequest.setArtifact( artifact );
descriptorRequest.setRepositories( system.newResolutionRepositories(session, repositories ) );
ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor( session, descriptorRequest );
for ( Dependency dependency : descriptorResult.getDependencies() )
{
System.out.println( dependency );
}
}
您可以尝试使用“默认”作为存储库类型吗?(新的RemoteRepository.Builder(“中心”、“默认值”))默认的含义是什么?我找不到任何关于任何可用类型的文档。@gambo同意文档对于很多断开的链接都没有用处。由于使用了“Maven2”存储库,Aether为其提供布局工厂,并且必须具有“默认”内容类型。请参阅org.eclipse.Aether.internal.impl.Maven2RepositoryLayoutFactory#第62行
Exception in thread "main" org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.logging.log4j:log4j-api:jar:2.1
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:329)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:287)
at org.eclipse.aether.examples.GetDirectDependencies.main(GetDirectDependencies.java:48)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.logging.log4j:log4j-api:pom:2.1 from/to central (https://repo1.maven.org/maven2): Cannot access https://repo1.maven.org/maven2 with type using the available connector factories: BasicRepositoryConnectorFactory
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.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:314)