mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
repository libraries: add option to exclude transitive dependencies (IDEA-178557)
This commit is contained in:
@@ -98,10 +98,11 @@ public class JarRepositoryManager {
|
||||
final String coord = dialog.getCoordinateText();
|
||||
final boolean attachSources = dialog.getAttachSources();
|
||||
final boolean attachJavaDoc = dialog.getAttachJavaDoc();
|
||||
boolean includeTransitiveDependencies = dialog.getIncludeTransitiveDependencies();
|
||||
final String copyTo = dialog.getDirectoryPath();
|
||||
|
||||
final NewLibraryConfiguration config = resolveAndDownload(
|
||||
project, coord, attachSources, attachJavaDoc, copyTo, RemoteRepositoriesConfiguration.getInstance(project).getRepositories()
|
||||
project, coord, attachSources, attachJavaDoc, includeTransitiveDependencies, copyTo, RemoteRepositoriesConfiguration.getInstance(project).getRepositories()
|
||||
);
|
||||
if (config == null) {
|
||||
Messages.showErrorDialog(parentComponent, "No files were downloaded for " + coord, CommonBundle.getErrorTitle());
|
||||
@@ -114,9 +115,10 @@ public class JarRepositoryManager {
|
||||
String coord,
|
||||
boolean attachSources,
|
||||
boolean attachJavaDoc,
|
||||
boolean includeTransitiveDependencies,
|
||||
String copyTo,
|
||||
Collection<RemoteRepositoryDescription> repositories) {
|
||||
RepositoryLibraryProperties props = new RepositoryLibraryProperties(coord);
|
||||
RepositoryLibraryProperties props = new RepositoryLibraryProperties(coord, includeTransitiveDependencies);
|
||||
final Collection<OrderRoot> roots = loadDependenciesModal(
|
||||
project, props, attachSources, attachJavaDoc, copyTo, repositories
|
||||
);
|
||||
@@ -188,7 +190,7 @@ public class JarRepositoryManager {
|
||||
boolean loadJavadoc,
|
||||
@Nullable String copyTo,
|
||||
@Nullable Collection<RemoteRepositoryDescription> repositories, boolean modal) {
|
||||
final JpsMavenRepositoryLibraryDescriptor libDescriptor = new JpsMavenRepositoryLibraryDescriptor(libraryProps.getGroupId(), libraryProps.getArtifactId(), libraryProps.getVersion());
|
||||
final JpsMavenRepositoryLibraryDescriptor libDescriptor = libraryProps.getRepositoryLibraryDescriptor();
|
||||
if (libDescriptor.getMavenId() != null) {
|
||||
if (repositories == null || repositories.isEmpty()) {
|
||||
repositories = RemoteRepositoriesConfiguration.getInstance(project).getRepositories();
|
||||
@@ -235,7 +237,7 @@ public class JarRepositoryManager {
|
||||
}
|
||||
loadDependenciesAsync(
|
||||
project,
|
||||
new JpsMavenRepositoryLibraryDescriptor(libraryProps.getGroupId(), libraryProps.getArtifactId(), libraryProps.getVersion()),
|
||||
libraryProps.getRepositoryLibraryDescriptor(),
|
||||
kinds, repos, copyTo, resultProcessor
|
||||
);
|
||||
}
|
||||
@@ -292,7 +294,7 @@ public class JarRepositoryManager {
|
||||
template = new RepositoryArtifactDescription(null, null, null, "jar", null, coord, null);
|
||||
}
|
||||
else {
|
||||
template = new RepositoryArtifactDescription(new RepositoryLibraryProperties(coord), "jar", null);
|
||||
template = new RepositoryArtifactDescription(new RepositoryLibraryProperties(coord, true), "jar", null);
|
||||
}
|
||||
ProgressManager.getInstance().run(new Task.Backgroundable(project, "Maven", false) {
|
||||
|
||||
@@ -539,7 +541,8 @@ public class JarRepositoryManager {
|
||||
protected Collection<Artifact> perform(ProgressIndicator progress, ArtifactRepositoryManager manager) throws Exception {
|
||||
final String version = myDesc.getVersion();
|
||||
try {
|
||||
return manager.resolveDependencyAsArtifact(myDesc.getGroupId(), myDesc.getArtifactId(), version, myKinds);
|
||||
return manager.resolveDependencyAsArtifact(myDesc.getGroupId(), myDesc.getArtifactId(), version, myKinds,
|
||||
myDesc.isIncludeTransitiveDependencies());
|
||||
}
|
||||
catch (TransferCancelledException e) {
|
||||
throw new ProcessCanceledException(e);
|
||||
@@ -553,7 +556,8 @@ public class JarRepositoryManager {
|
||||
throw e;
|
||||
}
|
||||
try {
|
||||
return manager.resolveDependencyAsArtifact(myDesc.getGroupId(), myDesc.getArtifactId(), resolvedVersion, myKinds);
|
||||
return manager.resolveDependencyAsArtifact(myDesc.getGroupId(), myDesc.getArtifactId(), resolvedVersion, myKinds,
|
||||
myDesc.isIncludeTransitiveDependencies());
|
||||
}
|
||||
catch (TransferCancelledException e1) {
|
||||
throw new ProcessCanceledException(e1);
|
||||
|
||||
@@ -70,7 +70,7 @@ public class RepositoryAddLibraryAction extends IntentionAndQuickFixAction {
|
||||
module.getProject(),
|
||||
model,
|
||||
libraryDescription,
|
||||
false);
|
||||
false, true);
|
||||
if (!dialog.showAndGet()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<text value=""/>
|
||||
</properties>
|
||||
</component>
|
||||
<grid id="8a0e6" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="8a0e6" layout-manager="GridLayoutManager" row-count="1" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||
@@ -81,7 +81,7 @@
|
||||
<children>
|
||||
<component id="e800f" class="javax.swing.JCheckBox" binding="mySourcesCheckBox">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="&Sources"/>
|
||||
@@ -89,7 +89,7 @@
|
||||
</component>
|
||||
<component id="63ac5" class="javax.swing.JCheckBox" binding="myJavaDocCheckBox">
|
||||
<constraints>
|
||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
<grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Java&Docs"/>
|
||||
@@ -100,6 +100,15 @@
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</hspacer>
|
||||
<component id="dcc0d" class="com.intellij.ui.components.JBCheckBox" binding="myIncludeTransitiveDepsCheckBox">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<selected value="true"/>
|
||||
<text value="&Transitive depedencies"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
<component id="65473" class="com.intellij.ui.components.JBCheckBox" binding="myDownloadToCheckBox">
|
||||
|
||||
@@ -90,6 +90,7 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
private JBCheckBox myDownloadToCheckBox;
|
||||
private JBLabel myCaptionLabel;
|
||||
private JPanel myDownloadOptionsPanel;
|
||||
private JBCheckBox myIncludeTransitiveDepsCheckBox;
|
||||
|
||||
private final JComboBox myCombobox;
|
||||
|
||||
@@ -217,6 +218,10 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
return mySourcesCheckBox.isSelected();
|
||||
}
|
||||
|
||||
public boolean getIncludeTransitiveDependencies() {
|
||||
return myIncludeTransitiveDepsCheckBox.isSelected();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getDirectoryPath() {
|
||||
return myDownloadToCheckBox.isSelected()? myDirectoryField.getText() : null;
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ public class RepositoryLibrarySupportInModuleConfigurable extends FrameworkSuppo
|
||||
public RepositoryLibrarySupportInModuleConfigurable(@Nullable Project project, @NotNull RepositoryLibraryDescription libraryDescription) {
|
||||
this.libraryDescription = libraryDescription;
|
||||
RepositoryLibraryProperties defaultProperties = libraryDescription.createDefaultProperties();
|
||||
this.model = new RepositoryLibraryPropertiesModel(defaultProperties.getVersion(), false, false);
|
||||
this.model = new RepositoryLibraryPropertiesModel(defaultProperties.getVersion(), false, false, defaultProperties.isIncludeTransitiveDependencies());
|
||||
editor = new RepositoryLibraryPropertiesEditor(project, model, libraryDescription);
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -50,7 +50,7 @@ public class RepositoryLibraryWithDescriptionEditor
|
||||
RepositoryLibraryPropertiesModel model = new RepositoryLibraryPropertiesModel(
|
||||
properties.getVersion(),
|
||||
RepositoryUtils.libraryHasSources(myEditorComponent.getLibraryEditor()),
|
||||
RepositoryUtils.libraryHasJavaDocs(myEditorComponent.getLibraryEditor()));
|
||||
RepositoryUtils.libraryHasJavaDocs(myEditorComponent.getLibraryEditor()), properties.isIncludeTransitiveDependencies());
|
||||
|
||||
final Project project = myEditorComponent.getProject();
|
||||
assert project != null : "EditorComponent's project must not be null in order to be used with RepositoryLibraryWithDescriptionEditor";
|
||||
@@ -59,11 +59,12 @@ public class RepositoryLibraryWithDescriptionEditor
|
||||
project,
|
||||
model,
|
||||
RepositoryLibraryDescription.findDescription(properties),
|
||||
true);
|
||||
true, true);
|
||||
if (!dialog.showAndGet()) {
|
||||
return;
|
||||
}
|
||||
myEditorComponent.getProperties().changeVersion(model.getVersion());
|
||||
myEditorComponent.getProperties().setIncludeTransitiveDependencies(model.isIncludeTransitiveDependencies());
|
||||
if (wasGeneratedName) {
|
||||
myEditorComponent.renameLibrary(RepositoryLibraryType.getInstance().getDescription(properties));
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,11 +30,11 @@ public class RepositoryLibraryPropertiesDialog extends DialogWrapper {
|
||||
public RepositoryLibraryPropertiesDialog(@Nullable Project project,
|
||||
RepositoryLibraryPropertiesModel model,
|
||||
RepositoryLibraryDescription description,
|
||||
final boolean changesRequired) {
|
||||
final boolean changesRequired, final boolean allowExcludingTransitiveDependencies) {
|
||||
super(project);
|
||||
this.model = model;
|
||||
propertiesEditor =
|
||||
new RepositoryLibraryPropertiesEditor(project, model, description, new RepositoryLibraryPropertiesEditor.ModelChangeListener() {
|
||||
new RepositoryLibraryPropertiesEditor(project, model, description, allowExcludingTransitiveDependencies, new RepositoryLibraryPropertiesEditor.ModelChangeListener() {
|
||||
@Override
|
||||
public void onChange(RepositoryLibraryPropertiesEditor editor) {
|
||||
setOKActionEnabled(editor.isValid() && (!changesRequired || editor.hasChanges()));
|
||||
|
||||
+9
-1
@@ -120,7 +120,7 @@
|
||||
<grid row="2" column="0" row-span="1" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</vspacer>
|
||||
<grid id="1bd32" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="1bd32" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||
@@ -151,6 +151,14 @@
|
||||
<text value="Download &JavaDocs"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="75440" class="com.intellij.ui.components.JBCheckBox" binding="myIncludeTransitiveDepsCheckBox">
|
||||
<constraints>
|
||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Include &transitive dependencies"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</children>
|
||||
|
||||
+12
-1
@@ -61,6 +61,7 @@ public class RepositoryLibraryPropertiesEditor {
|
||||
private JBCheckBox downloadSourcesCheckBox;
|
||||
private JBCheckBox downloadJavaDocsCheckBox;
|
||||
private JBLabel mavenCoordinates;
|
||||
private JBCheckBox myIncludeTransitiveDepsCheckBox;
|
||||
|
||||
@NotNull private ModelChangeListener onChangeListener;
|
||||
|
||||
@@ -71,7 +72,7 @@ public class RepositoryLibraryPropertiesEditor {
|
||||
public RepositoryLibraryPropertiesEditor(@Nullable Project project,
|
||||
RepositoryLibraryPropertiesModel model,
|
||||
RepositoryLibraryDescription description) {
|
||||
this(project, model, description, new ModelChangeListener() {
|
||||
this(project, model, description, true, new ModelChangeListener() {
|
||||
@Override
|
||||
public void onChange(RepositoryLibraryPropertiesEditor editor) {
|
||||
|
||||
@@ -83,12 +84,14 @@ public class RepositoryLibraryPropertiesEditor {
|
||||
public RepositoryLibraryPropertiesEditor(@Nullable Project project,
|
||||
final RepositoryLibraryPropertiesModel model,
|
||||
RepositoryLibraryDescription description,
|
||||
boolean allowExcludingTransitiveDependencies,
|
||||
@NotNull final ModelChangeListener onChangeListener) {
|
||||
this.initialModel = model.clone();
|
||||
this.model = model;
|
||||
this.project = project == null ? ProjectManager.getInstance().getDefaultProject() : project;
|
||||
repositoryLibraryDescription = description;
|
||||
mavenCoordinates.setCopyable(true);
|
||||
myIncludeTransitiveDepsCheckBox.setVisible(allowExcludingTransitiveDependencies);
|
||||
myReloadButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -243,6 +246,14 @@ public class RepositoryLibraryPropertiesEditor {
|
||||
onChangeListener.onChange(RepositoryLibraryPropertiesEditor.this);
|
||||
}
|
||||
});
|
||||
myIncludeTransitiveDepsCheckBox.setSelected(model.isIncludeTransitiveDependencies());
|
||||
myIncludeTransitiveDepsCheckBox.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
model.setIncludeTransitiveDependencies(myIncludeTransitiveDepsCheckBox.isSelected());
|
||||
onChangeListener.onChange(RepositoryLibraryPropertiesEditor.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-1
@@ -73,7 +73,8 @@ public class RepositoryLibrarySupport {
|
||||
RepositoryLibraryProperties libraryProperties = new RepositoryLibraryProperties(
|
||||
libraryDescription.getGroupId(),
|
||||
libraryDescription.getArtifactId(),
|
||||
model.getVersion());
|
||||
model.getVersion(),
|
||||
model.isIncludeTransitiveDependencies());
|
||||
final LibraryEx library = (LibraryEx)modifiableModel.createLibrary(
|
||||
LibraryEditingUtil.suggestNewLibraryName(modifiableModel, RepositoryLibraryType.getInstance().getDescription(libraryProperties)),
|
||||
RepositoryLibraryType.REPOSITORY_LIBRARY_KIND);
|
||||
|
||||
+18
-1
@@ -21,21 +21,36 @@ public class RepositoryLibraryPropertiesModel {
|
||||
private String version;
|
||||
private boolean downloadSources;
|
||||
private boolean downloadJavaDocs;
|
||||
private boolean includeTransitiveDependencies;
|
||||
|
||||
public RepositoryLibraryPropertiesModel(String version, boolean downloadSources, boolean downloadJavaDocs) {
|
||||
this(version, downloadSources, downloadJavaDocs, true);
|
||||
}
|
||||
|
||||
public RepositoryLibraryPropertiesModel(String version, boolean downloadSources, boolean downloadJavaDocs,
|
||||
boolean includeTransitiveDependencies) {
|
||||
this.version = version;
|
||||
this.downloadSources = downloadSources;
|
||||
this.downloadJavaDocs = downloadJavaDocs;
|
||||
this.includeTransitiveDependencies = includeTransitiveDependencies;
|
||||
}
|
||||
|
||||
public RepositoryLibraryPropertiesModel clone() {
|
||||
return new RepositoryLibraryPropertiesModel(version, downloadSources, downloadJavaDocs);
|
||||
return new RepositoryLibraryPropertiesModel(version, downloadSources, downloadJavaDocs, includeTransitiveDependencies);
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return !Strings.isNullOrEmpty(version);
|
||||
}
|
||||
|
||||
public boolean isIncludeTransitiveDependencies() {
|
||||
return includeTransitiveDependencies;
|
||||
}
|
||||
|
||||
public void setIncludeTransitiveDependencies(boolean includeTransitiveDependencies) {
|
||||
this.includeTransitiveDependencies = includeTransitiveDependencies;
|
||||
}
|
||||
|
||||
public boolean isDownloadSources() {
|
||||
return downloadSources;
|
||||
}
|
||||
@@ -69,6 +84,7 @@ public class RepositoryLibraryPropertiesModel {
|
||||
|
||||
if (downloadSources != model.downloadSources) return false;
|
||||
if (downloadJavaDocs != model.downloadJavaDocs) return false;
|
||||
if (includeTransitiveDependencies != model.includeTransitiveDependencies) return false;
|
||||
if (version != null ? !version.equals(model.version) : model.version != null) return false;
|
||||
|
||||
return true;
|
||||
@@ -78,6 +94,7 @@ public class RepositoryLibraryPropertiesModel {
|
||||
public int hashCode() {
|
||||
int result = (downloadSources ? 1 : 0);
|
||||
result = 31 * result + (downloadJavaDocs ? 1 : 0);
|
||||
result = 31 * result + (includeTransitiveDependencies ? 1 : 0);
|
||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user