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());
}
感谢将看。如何从使用HTTPS的存储库下载工件, – user1555190