in repository/service/src/main/java/org/apache/karaf/cave/repository/service/RepositoryServiceImpl.java [420:460]
public void addArtifact(String artifactUrl, String groupId, String artifactId, String version, String type, String classifier, String name) throws Exception {
if (repositories.get(name) == null) {
throw new IllegalArgumentException("Repository " + name + " doesn't exist");
}
if (artifactUrl == null) {
throw new IllegalArgumentException("Artifact URL can't be null");
}
if (repositories.get(name).getLocation() == null || repositories.get(name).getLocation().isEmpty()) {
throw new IllegalStateException("Repository " + name + " location is not defined");
}
File artifactFile = File.createTempFile(artifactId, type);
try (FileOutputStream os = new FileOutputStream(artifactFile)) {
copyStream(new URI(artifactUrl).toURL().openStream(), os);
os.flush();
}
DefaultServiceLocator defaultServiceLocator = MavenRepositorySystemUtils.newServiceLocator();
defaultServiceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
defaultServiceLocator.addService(TransporterFactory.class, FileTransporterFactory.class);
defaultServiceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class);
RepositorySystem repositorySystem = defaultServiceLocator.getService(RepositorySystem.class);
DefaultRepositorySystemSession repositorySystemSession = MavenRepositorySystemUtils.newSession();
LocalRepository localRepository = new LocalRepository(repositories.get(name).getLocation());
LocalRepositoryManager localRepositoryManager = repositorySystem.newLocalRepositoryManager(repositorySystemSession, localRepository);
repositorySystemSession.setLocalRepositoryManager(localRepositoryManager);
repositorySystemSession.setTransferListener(new ConsoleTransferListener(System.out));
repositorySystemSession.setRepositoryListener(new ConsoleRepositoryListener(System.out));
Artifact artifact;
if (classifier != null) {
artifact = new DefaultArtifact(groupId, artifactId, classifier, type, version);
} else {
artifact = new DefaultArtifact(groupId, artifactId, type, version);
}
artifact = artifact.setFile(artifactFile);
InstallRequest installRequest = new InstallRequest();
installRequest.addArtifact(artifact);
repositorySystem.install(repositorySystemSession, installRequest);
}