2015-10-06 105 views
0

我试图使用java和aethor库连接到远程仓库,通过代码手动下载工件,例如jar/zip/war。但即时通讯找到文档不是很有帮助,任何人有任何想法?使用java和aether从远程仓库下载工件

这里是我有

public static void main(String[] args) throws Exception { 
    DefaultServiceLocator locator = new DefaultServiceLocator(); 
    locator.addService(RepositoryConnectorFactory.class, AsyncRepositoryConnectorFactory.class); 
    locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class); 
    locator.addService(VersionResolver.class, DefaultVersionResolver.class); 
    locator.addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class); 
    locator.addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class); 
    locator.setServices(WagonProvider.class, new WagonProvider() { 
     public Wagon lookup(String roleHint) throws Exception { 
      if("http".equals(roleHint)) { 
       return new LightweightHttpWagon(); 
      } 
      return null; 
     } 

     public void release(Wagon wagon) {} 
    }); 

    RepositorySystem system = locator.getService(RepositorySystem.class); 

    MavenRepositorySystemSession session = new MavenRepositorySystemSession(); 

    LocalRepository localRepo = new LocalRepository("target/local-repo"); 
    session.setLocalRepositoryManager(system.newLocalRepositoryManager(localRepo)); 

    Artifact artifact = new DefaultArtifact("junit:junit:4.8.2"); 

    // RemoteRepository repo = new RemoteRepository("central", "default", "http://repo1.maven.org/maven2/"); 
    Authentication authentication = new Authentication("atestuser", "apassword"); 
    RemoteRepository repo = new RemoteRepository().setUrl("https://somerepository/repo/").setAuthentication(authentication); 


    RepositoryConnector connector = new AsyncRepositoryConnectorFactory().newInstance(session, repo); 

    ArtifactDownload artDown = new ArtifactDownload(artifact, null, new File("C:\\test\\junit.jar"), null); 
    connector.get(Arrays.asList(artDown), null); 

    connector.close(); 

    ArtifactRequest artifactRequest = new ArtifactRequest(); 
    artifactRequest.setArtifact(artifact); 
    artifactRequest.addRepository(repo); 

    ArtifactResult artifactResult = system.resolveArtifact(session, artifactRequest); 

    artifact = artifactResult.getArtifact(); 

    System.out.println(artifact + " resolved to " + artifact.getFile()); 
} 

回答

2

我还使用Eclipse的乙醚下载文物。我发现从eclipse开始以太是比以前的sonatype乙醚有点难,但这是一个小样本项目,我已经创建了一个开放源代码项目的一部分:MavenPP

还有一个不错的演示项目,显示了许多功能日食乙醚的:aether-demo

希望这有助于;)

+0

感谢将看。如何从使用HTTPS的存储库下载工件, – user1555190