[maven] IDEA-359629 resolve plugins in projects with packaging "bundle"

(cherry picked from commit b87ec212d34e5692b633906ca64c28019c1d59df)

IJ-CR-146858

GitOrigin-RevId: c62e999305f5d6b03e9e60c9452a1826abcabd69
This commit is contained in:
Dmitry Kichinsky
2024-10-15 21:54:11 +02:00
committed by intellij-monorepo-bot
parent 0980804342
commit a842928a94
5 changed files with 50 additions and 23 deletions

View File

@@ -31,9 +31,6 @@ public class Maven3ModelConverter {
return convertModel(model,
asSourcesList(build.getSourceDirectory()),
asSourcesList(build.getTestSourceDirectory()),
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList(),
localRepository);
}
@@ -45,9 +42,6 @@ public class Maven3ModelConverter {
public static MavenModel convertModel(Model model,
List<String> sources,
List<String> testSources,
Collection<? extends Artifact> dependencies,
Collection<? extends DependencyNode> dependencyTree,
Collection<? extends Artifact> extensions,
File localRepository) {
MavenModel result = new MavenModel();
result.setMavenId(new MavenId(model.getGroupId(), model.getArtifactId(), model.getVersion()));
@@ -60,12 +54,12 @@ public class Maven3ModelConverter {
result.setPackaging(model.getPackaging());
result.setName(model.getName());
result.setProperties(model.getProperties() == null ? new Properties() : model.getProperties());
result.setPlugins(convertPlugins(model));
result.setPlugins(convertPlugins(model, Collections.emptyList()));
Map<Artifact, MavenArtifact> convertedArtifacts = new HashMap<Artifact, MavenArtifact>();
result.setExtensions(convertArtifacts(extensions, convertedArtifacts, localRepository));
result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository));
result.setDependencyTree(convertDependencyNodes(null, dependencyTree, convertedArtifacts, localRepository));
result.setExtensions(convertArtifacts(Collections.emptyList(), convertedArtifacts, localRepository));
result.setDependencies(convertArtifacts(Collections.emptyList(), convertedArtifacts, localRepository));
result.setDependencyTree(convertDependencyNodes(null, Collections.emptyList(), convertedArtifacts, localRepository));
result.setRemoteRepositories(convertRepositories(model.getRepositories()));
result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories()));
@@ -247,7 +241,7 @@ public class Maven3ModelConverter {
return result;
}
public static List<MavenPlugin> convertPlugins(Model mavenModel) {
protected static List<MavenPlugin> convertPlugins(Model mavenModel, Collection<? extends Artifact> pluginArtifacts) {
List<MavenPlugin> result = new ArrayList<MavenPlugin>();
Build build = mavenModel.getBuild();
@@ -255,7 +249,7 @@ public class Maven3ModelConverter {
List<Plugin> plugins = build.getPlugins();
if (plugins != null) {
for (Plugin each : plugins) {
result.add(convertPlugin(false, each));
result.add(convertPlugin(false, each, pluginArtifacts));
}
}
}
@@ -263,7 +257,7 @@ public class Maven3ModelConverter {
return result;
}
private static MavenPlugin convertPlugin(boolean isDefault, Plugin plugin) {
private static MavenPlugin convertPlugin(boolean isDefault, Plugin plugin, Collection<? extends Artifact> pluginArtifacts) {
List<MavenPlugin.Execution> executions = new ArrayList<MavenPlugin.Execution>(plugin.getExecutions().size());
for (PluginExecution each : plugin.getExecutions()) {
executions.add(convertExecution(each));
@@ -274,15 +268,28 @@ public class Maven3ModelConverter {
deps.add(new MavenId(each.getGroupId(), each.getArtifactId(), each.getVersion()));
}
String pluginVersion = getPluginVersion(plugin, pluginArtifacts);
return new MavenPlugin(plugin.getGroupId(),
plugin.getArtifactId(),
plugin.getVersion(),
pluginVersion,
isDefault,
"true".equals(plugin.getExtensions()),
convertConfiguration(plugin.getConfiguration()),
executions, deps);
}
private static String getPluginVersion(Plugin plugin, Collection<? extends Artifact> pluginArtifacts) {
String pluginVersion = plugin.getVersion();
if (null != pluginVersion) return pluginVersion;
if (null == plugin.getGroupId() || null == plugin.getArtifactId()) return null;
for (Artifact each : pluginArtifacts) {
if (plugin.getGroupId().equals(each.getGroupId()) && plugin.getArtifactId().equals(each.getArtifactId())) {
return each.getVersion();
}
}
return null;
}
public static MavenPlugin.Execution convertExecution(PluginExecution execution) {
return new MavenPlugin.Execution(execution.getId(), execution.getPhase(), execution.getGoals(), convertConfiguration(execution.getConfiguration()));
}

View File

@@ -29,6 +29,7 @@ public final class Maven3AetherModelConverter extends Maven3ModelConverter {
List<String> testSources,
Collection<? extends Artifact> dependencies,
Collection<? extends DependencyNode> dependencyTree,
Collection<? extends Artifact> pluginArtifacts,
Collection<? extends Artifact> extensions,
File localRepository) throws RemoteException {
MavenModel result = new MavenModel();
@@ -42,7 +43,7 @@ public final class Maven3AetherModelConverter extends Maven3ModelConverter {
result.setPackaging(model.getPackaging());
result.setName(model.getName());
result.setProperties(model.getProperties() == null ? new Properties() : model.getProperties());
result.setPlugins(convertPlugins(model));
result.setPlugins(convertPlugins(model, pluginArtifacts));
Map<Artifact, MavenArtifact> convertedArtifacts = new HashMap<Artifact, MavenArtifact>();
result.setExtensions(convertArtifacts(extensions, convertedArtifacts, localRepository));

View File

@@ -328,8 +328,14 @@ public class Maven3XProjectResolver {
List<DependencyNode> dependencyNodes =
dependencyGraph != null ? dependencyGraph.getChildren() : Collections.emptyList();
model = Maven3AetherModelConverter.convertModelWithAetherDependencyTree(
mavenProject.getModel(), mavenProject.getCompileSourceRoots(), mavenProject.getTestCompileSourceRoots(),
mavenProject.getArtifacts(), dependencyNodes, mavenProject.getExtensionArtifacts(), myEmbedder.getLocalRepositoryFile());
mavenProject.getModel(),
mavenProject.getCompileSourceRoots(),
mavenProject.getTestCompileSourceRoots(),
mavenProject.getArtifacts(),
dependencyNodes,
mavenProject.getPluginArtifacts(),
mavenProject.getExtensionArtifacts(),
myEmbedder.getLocalRepositoryFile());
}
catch (Exception e) {
problems.addAll(myEmbedder.collectProblems(mavenProject.getFile(), Collections.singleton(e), modelProblems));

View File

@@ -39,7 +39,7 @@ public final class Maven40AetherModelConverter extends Maven40ModelConverter {
result.setName(mavenProject.getName());
result.setProperties(mavenProject.getProperties() == null ? new Properties() : mavenProject.getProperties());
//noinspection SSBasedInspection
result.setPlugins(convertPlugins(mavenProject.getModel()));
result.setPlugins(convertPlugins(mavenProject.getModel(), mavenProject.getPluginArtifacts()));
Map<Artifact, MavenArtifact> convertedArtifacts = new HashMap<>();
result.setExtensions(convertArtifacts(mavenProject.getExtensionArtifacts(), convertedArtifacts, localRepository));

View File

@@ -46,7 +46,7 @@ public class Maven40ModelConverter {
result.setPackaging(model.getPackaging());
result.setName(model.getName());
result.setProperties(model.getProperties() == null ? new Properties() : model.getProperties());
result.setPlugins(convertPlugins(model));
result.setPlugins(convertPlugins(model, Collections.emptyList()));
result.setRemoteRepositories(convertRepositories(model.getRepositories()));
result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories()));
@@ -57,7 +57,7 @@ public class Maven40ModelConverter {
return result;
}
public static List<MavenPlugin> convertPlugins(Model mavenModel) {
protected static List<MavenPlugin> convertPlugins(Model mavenModel, Collection<? extends Artifact> pluginArtifacts) {
List<MavenPlugin> result = new ArrayList<>();
Build build = mavenModel.getBuild();
@@ -65,7 +65,7 @@ public class Maven40ModelConverter {
List<Plugin> plugins = build.getPlugins();
if (plugins != null) {
for (Plugin each : plugins) {
result.add(convertPlugin(each));
result.add(convertPlugin(each, pluginArtifacts));
}
}
}
@@ -73,7 +73,7 @@ public class Maven40ModelConverter {
return result;
}
public static MavenPlugin convertPlugin(Plugin plugin) {
private static MavenPlugin convertPlugin(Plugin plugin, Collection<? extends Artifact> pluginArtifacts) {
List<MavenPlugin.Execution> executions = new ArrayList<>(plugin.getExecutions().size());
for (PluginExecution each : plugin.getExecutions()) {
executions.add(convertExecution(each));
@@ -84,15 +84,28 @@ public class Maven40ModelConverter {
deps.add(new MavenId(each.getGroupId(), each.getArtifactId(), each.getVersion()));
}
String pluginVersion = getPluginVersion(plugin, pluginArtifacts);
return new MavenPlugin(plugin.getGroupId(),
plugin.getArtifactId(),
plugin.getVersion(),
pluginVersion,
false,
"true".equals(plugin.getExtensions()),
convertConfiguration(plugin.getConfiguration()),
executions, deps);
}
private static String getPluginVersion(Plugin plugin, Collection<? extends Artifact> pluginArtifacts) {
String pluginVersion = plugin.getVersion();
if (null != pluginVersion) return pluginVersion;
if (null == plugin.getGroupId() || null == plugin.getArtifactId()) return null;
for (Artifact each : pluginArtifacts) {
if (plugin.getGroupId().equals(each.getGroupId()) && plugin.getArtifactId().equals(each.getArtifactId())) {
return each.getVersion();
}
}
return null;
}
public static MavenPlugin.Execution convertExecution(PluginExecution execution) {
return new MavenPlugin.Execution(execution.getId(), execution.getPhase(), execution.getGoals(),
convertConfiguration(execution.getConfiguration()));