use of org.jetbrains.idea.maven.model.MavenArtifactNode in project intellij-community by JetBrains.
the class MavenProjectTest method testDependenciesTreeWithConflict.
public void testDependenciesTreeWithConflict() throws Exception {
VirtualFile m1 = createModulePom("p1", "<groupId>test</groupId>" + "<artifactId>m1</artifactId>" + "<version>1</version>" + "<dependencies>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>m2</artifactId>" + " <version>1</version>" + " </dependency>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>lib</artifactId>" + " <version>1</version>" + " </dependency>" + "</dependencies>");
VirtualFile m2 = createModulePom("p2", "<groupId>test</groupId>" + "<artifactId>m2</artifactId>" + "<version>1</version>" + "<dependencies>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>lib</artifactId>" + " <version>2</version>" + " </dependency>" + "</dependencies>");
importProjects(m1, m2);
resolveDependenciesAndImport();
List<MavenArtifactNode> nodes = myProjectsTree.getRootProjects().get(0).getDependencyTree();
assertDependenciesNodes(nodes, "test:m2:jar:1->(test:lib:jar:2[CONFLICT:test:lib:jar:1]->())," + "test:lib:jar:1->()");
assertSame(nodes.get(0).getDependencies().get(0).getRelatedArtifact(), nodes.get(1).getArtifact());
}
use of org.jetbrains.idea.maven.model.MavenArtifactNode in project intellij-community by JetBrains.
the class MavenProjectTest method testDependencyTreeDuplicates.
public void testDependencyTreeDuplicates() throws Exception {
VirtualFile m1 = createModulePom("p1", "<groupId>test</groupId>" + "<artifactId>m1</artifactId>" + "<version>1</version>" + "<dependencies>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>m2</artifactId>" + " <version>1</version>" + " </dependency>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>m3</artifactId>" + " <version>1</version>" + " </dependency>" + "</dependencies>");
VirtualFile m2 = createModulePom("p2", "<groupId>test</groupId>" + "<artifactId>m2</artifactId>" + "<version>1</version>" + "<dependencies>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>lib</artifactId>" + " <version>1</version>" + " </dependency>" + "</dependencies>");
VirtualFile m3 = createModulePom("p3", "<groupId>test</groupId>" + "<artifactId>m3</artifactId>" + "<version>1</version>" + "<dependencies>" + " <dependency>" + " <groupId>test</groupId>" + " <artifactId>lib</artifactId>" + " <version>1</version>" + " </dependency>" + "</dependencies>");
importProjects(m1, m2, m3);
resolveDependenciesAndImport();
List<MavenArtifactNode> nodes = myProjectsTree.findProject(m1).getDependencyTree();
assertDependenciesNodes(nodes, "test:m2:jar:1->(test:lib:jar:1->()),test:m3:jar:1->(test:lib:jar:1[DUPLICATE:test:lib:jar:1]->())");
assertSame(nodes.get(0).getDependencies().get(0).getArtifact(), nodes.get(1).getDependencies().get(0).getRelatedArtifact());
}
use of org.jetbrains.idea.maven.model.MavenArtifactNode in project intellij-plugins by JetBrains.
the class ImporterUtil method collectDependencies.
/**
* Collects the dependencies for the given project. Takes into account any transitive embedding instructions.
*
* @param props the properties with additional instructions
* @param project the maven project
* @return a collection of dependencies.
*/
@NotNull
static Collection<MavenArtifact> collectDependencies(@NotNull Map<String, String> props, @NotNull MavenProject project) {
Collection<MavenArtifact> dependencies;
if (Boolean.parseBoolean(props.get(DependencyEmbedder.EMBED_TRANSITIVE))) {
Set<MavenArtifact> processed = new HashSet<>();
// flatten the tree while taking care of endless recursions
LinkedList<MavenArtifactNode> nodes = new LinkedList<>(project.getDependencyTree());
while (!nodes.isEmpty()) {
MavenArtifactNode node = nodes.pop();
MavenArtifact artifact = node.getArtifact();
if (!processed.contains(artifact)) {
processed.add(artifact);
nodes.addAll(node.getDependencies());
}
}
dependencies = processed;
} else {
dependencies = project.getDependencies();
}
return dependencies;
}
Aggregations