use of org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession in project component-runtime by Talend.
the class Dependencies method findRepositories.
private static List<MavenRemoteRepository> findRepositories() {
final List<MavenRemoteRepository> repositories = new ArrayList<>();
final String repos = System.getProperty("talend.component.junit.maven.repositories");
if (repos != null && !repos.isEmpty()) {
for (final String repo : repos.split(",")) {
final String[] parts = repo.split("::");
final MavenRemoteRepository repository = MavenRemoteRepositories.createRemoteRepository(parts.length == 1 ? "repo_" + parts[0].replace(':', '_').replace('/', '_') : parts[0], parts.length == 1 ? parts[0] : parts[1], parts.length < 3 ? "default" : parts[2]);
repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_DAILY);
repository.setChecksumPolicy(MavenChecksumPolicy.CHECKSUM_POLICY_IGNORE);
repositories.add(repository);
}
} else if (!Boolean.getBoolean("talend.component.junit.maven.skipPomReading")) {
// try to grab from the root pom the repos - simplifying maven parsing for speed reasons and enough
// generally
File current = new File(".").getAbsoluteFile();
while (new File(current, "pom.xml").exists()) {
final File parent = current.getParentFile();
if (parent != null && new File(parent, "pom.xml").exists()) {
current = parent;
continue;
}
break;
}
final File pom = new File(current, "pom.xml");
if (pom.exists()) {
final PomEquippedResolveStage localPom = Maven.configureResolver().loadPomFromFile(pom);
final MavenWorkingSession mavenWorkingSession = PomEquippedResolveStageBaseImpl.class.cast(localPom).getMavenWorkingSession();
try {
final Field remoteRepositories = mavenWorkingSession.getClass().getDeclaredField("remoteRepositories");
if (!remoteRepositories.isAccessible()) {
remoteRepositories.setAccessible(true);
}
final List<RemoteRepository> pomRepos = List.class.cast(remoteRepositories.get(mavenWorkingSession));
if (pomRepos != null && !pomRepos.isEmpty()) {
pomRepos.forEach(r -> {
final MavenRemoteRepository repository = MavenRemoteRepositories.createRemoteRepository(r.getId(), r.getUrl(), "default");
repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_DAILY);
repository.setChecksumPolicy(MavenChecksumPolicy.CHECKSUM_POLICY_IGNORE);
repositories.add(repository);
});
}
} catch (final Exception e) {
throw new IllegalStateException("Check your shrinkwrap maven version", e);
}
}
}
if (!Boolean.getBoolean("talend.component.junit.maven.central.skip")) {
final MavenRemoteRepository central = MavenRemoteRepositories.createRemoteRepository("central_test_default", "http://repo.maven.apache.org/maven2/", "default");
central.setChecksumPolicy(MavenChecksumPolicy.CHECKSUM_POLICY_WARN);
central.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_NEVER);
repositories.add(central);
}
return repositories;
}
use of org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession in project syndesis by syndesisio.
the class RepackageExtensionMojo method obtainBomDependencies.
protected Set<MavenDependency> obtainBomDependencies(String urlLocation) throws IOException, MojoExecutionException {
Artifact artifact = downloadAndInstallArtifact(urlLocation).getArtifact();
File tempPom = new File(outputDirectory, ".syndesis-extension-plugin-temp-pom");
try (BufferedWriter out = Files.newBufferedWriter(tempPom.toPath(), StandardCharsets.UTF_8)) {
Dependency bom = new Dependency();
bom.setGroupId(artifact.getGroupId());
bom.setArtifactId(artifact.getArtifactId());
bom.setVersion(artifact.getVersion());
bom.setType(artifact.getExtension());
bom.setScope("import");
Model bomModel = new Model();
bomModel.setDependencyManagement(new DependencyManagement());
bomModel.getDependencyManagement().addDependency(bom);
bomModel.setRepositories(project.getRepositories());
MavenProject bomProject = new MavenProject();
bomProject.setModel(bomModel);
bomProject.setModelVersion(project.getModelVersion());
bomProject.setGroupId(project.getGroupId());
bomProject.setArtifactId(project.getArtifactId() + "-temp-bom");
bomProject.setVersion(project.getVersion());
ModelWriter modelWriter = new DefaultModelWriter();
modelWriter.write(out, Collections.emptyMap(), bomProject.getModel());
MavenResolverSystem resolver = Maven.resolver();
resolver.loadPomFromFile(tempPom).importCompileAndRuntimeDependencies();
MavenWorkingSession session = ((MavenWorkingSessionContainer) resolver).getMavenWorkingSession();
return session.getDependencyManagement();
} finally {
if (!tempPom.delete()) {
getLog().warn("Cannot delete file " + tempPom);
}
}
}
Aggregations