public void addArtifact()

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);
    }