mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-113403 Gradle: disable wrapper verification by default and add check for default wrapper files
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
gradle.name=Gradle
|
||||
|
||||
gradle.settings.text.use.wrapper=Use gradle wrapper (recommended)
|
||||
gradle.settings.text.use.wrapper.disabled=Use gradle wrapper (not configured for the current project)
|
||||
gradle.settings..text.use.local.distribution=Use local gradle distribution
|
||||
gradle.settings.text.use.default_wrapper.configured=Use default gradle wrapper (recommended)
|
||||
gradle.settings.text.use.default_wrapper.not_configured=Use default gradle wrapper (not configured for the current project)
|
||||
gradle.settings.text.use.wrapper.with_verification=Use gradle wrapper with verification
|
||||
gradle.settings.text.wrapper.verification.compatibility=Gradle wrapper verification works with Gradle 1.7 or later
|
||||
gradle.settings.text.use.local.distribution=Use local gradle distribution
|
||||
gradle.settings.text.use.bundled.distribution=Use bundled gradle distribution: ({0})
|
||||
|
||||
gradle.settings.text.home.path=Gradle home:
|
||||
|
||||
@@ -167,7 +167,15 @@ implements ExternalSystemConfigurableAware, ExternalSystemUiAware, ExternalSyste
|
||||
}
|
||||
|
||||
GradleProjectSettings projectLevelSettings = settings.getLinkedProjectSettings(pair.second);
|
||||
DistributionType distributionType = projectLevelSettings == null ? DistributionType.LOCAL : projectLevelSettings.getDistributionType();
|
||||
final DistributionType distributionType;
|
||||
if (projectLevelSettings == null) {
|
||||
distributionType =
|
||||
GradleUtil.isGradleDefaultWrapperFilesExist(pair.second) ? DistributionType.DEFAULT_WRAPPED : DistributionType.LOCAL;
|
||||
}
|
||||
else {
|
||||
distributionType = projectLevelSettings.getDistributionType() == null ? DistributionType.LOCAL : projectLevelSettings.getDistributionType();
|
||||
}
|
||||
|
||||
GradleExecutionSettings result = new GradleExecutionSettings(localGradlePath,
|
||||
settings.getServiceDirectoryPath(),
|
||||
distributionType,
|
||||
|
||||
+11
-8
@@ -34,6 +34,7 @@ import org.gradle.tooling.model.idea.BasicIdeaProject;
|
||||
import org.gradle.tooling.model.idea.IdeaProject;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.gradle.settings.DistributionType;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings;
|
||||
|
||||
import java.io.File;
|
||||
@@ -133,15 +134,17 @@ public class GradleExecutionHelper {
|
||||
|
||||
public <T> T execute(@NotNull String projectPath, @Nullable GradleExecutionSettings settings, @NotNull Function<ProjectConnection, T> f) {
|
||||
|
||||
// This is a workaround to get right base dir in case of 'PROJECT' setting used in case custom wrapper property file location
|
||||
// see org.gradle.wrapper.PathAssembler#getBaseDir for details
|
||||
String userDir = null;
|
||||
try {
|
||||
// This is a workaround to get right base dir in case of 'PROJECT' setting used
|
||||
// see org.gradle.wrapper.PathAssembler#getBaseDir for details
|
||||
userDir = System.getProperty("user.dir");
|
||||
System.setProperty("user.dir", projectPath);
|
||||
}
|
||||
catch (Exception e) {
|
||||
// ignore
|
||||
if(settings != null && settings.getDistributionType() == DistributionType.WRAPPED) {
|
||||
try {
|
||||
userDir = System.getProperty("user.dir");
|
||||
System.setProperty("user.dir", projectPath);
|
||||
}
|
||||
catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
ProjectConnection connection = getConnection(projectPath, settings);
|
||||
try {
|
||||
|
||||
+62
-16
@@ -30,6 +30,7 @@ import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.ui.components.JBRadioButton;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.gradle.util.GradleVersion;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -69,6 +70,8 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
private JLabel myGradleHomeLabel;
|
||||
private TextFieldWithBrowseButton myGradleHomePathField;
|
||||
private JBRadioButton myUseWrapperButton;
|
||||
private JBRadioButton myUseWrapperWithVerificationButton;
|
||||
private JBLabel myUseWrapperVerificationLabel;
|
||||
private JBRadioButton myUseLocalDistributionButton;
|
||||
private JBRadioButton myUseBundledDistributionButton;
|
||||
|
||||
@@ -111,7 +114,11 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
|
||||
initControls();
|
||||
content.add(myUseWrapperButton, ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
content.add(myUseBundledDistributionButton, ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
content.add(myUseWrapperWithVerificationButton, ExternalSystemUiUtil.getLabelConstraints(indentLevel));
|
||||
content.add(myUseWrapperVerificationLabel, ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
//content.add(Box.createGlue(), ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
// Hide bundled distribution option for a while
|
||||
// content.add(myUseBundledDistributionButton, ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
content.add(myUseLocalDistributionButton, ExternalSystemUiUtil.getFillLineConstraints(indentLevel));
|
||||
|
||||
content.add(myGradleHomeLabel, ExternalSystemUiUtil.getLabelConstraints(indentLevel));
|
||||
@@ -122,7 +129,7 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
ActionListener listener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
boolean localDistributionEnabled = e.getSource() == myUseLocalDistributionButton;
|
||||
boolean localDistributionEnabled = myUseLocalDistributionButton.isSelected();
|
||||
myGradleHomePathField.setEnabled(localDistributionEnabled);
|
||||
if (localDistributionEnabled) {
|
||||
if(myGradleHomePathField.getText().isEmpty()){
|
||||
@@ -142,9 +149,16 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
}
|
||||
}
|
||||
};
|
||||
myUseWrapperButton = new JBRadioButton(GradleBundle.message("gradle.settings.text.use.wrapper"));
|
||||
|
||||
myUseWrapperButton = new JBRadioButton(GradleBundle.message("gradle.settings.text.use.default_wrapper.configured"));
|
||||
myUseWrapperButton.addActionListener(listener);
|
||||
myUseLocalDistributionButton = new JBRadioButton(GradleBundle.message("gradle.settings..text.use.local.distribution"));
|
||||
myUseWrapperWithVerificationButton = new JBRadioButton(GradleBundle.message("gradle.settings.text.use.wrapper.with_verification"));
|
||||
myUseWrapperWithVerificationButton.addActionListener(listener);
|
||||
myUseWrapperVerificationLabel = new JBLabel(GradleBundle.message("gradle.settings.text.wrapper.verification.compatibility"));
|
||||
myUseWrapperVerificationLabel.setFont(UIUtil.getLabelFont(UIUtil.FontSize.MINI));
|
||||
myUseWrapperVerificationLabel.setIcon(UIUtil.getBalloonInformationIcon());
|
||||
|
||||
myUseLocalDistributionButton = new JBRadioButton(GradleBundle.message("gradle.settings.text.use.local.distribution"));
|
||||
myUseLocalDistributionButton.addActionListener(listener);
|
||||
|
||||
myUseBundledDistributionButton = new JBRadioButton(
|
||||
@@ -154,6 +168,7 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
|
||||
ButtonGroup buttonGroup = new ButtonGroup();
|
||||
buttonGroup.add(myUseWrapperButton);
|
||||
buttonGroup.add(myUseWrapperWithVerificationButton);
|
||||
buttonGroup.add(myUseBundledDistributionButton);
|
||||
buttonGroup.add(myUseLocalDistributionButton);
|
||||
}
|
||||
@@ -217,9 +232,11 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
return GradleBundle.message("gradle.home.setting.type.explicit.incorrect", gradleHomePath);
|
||||
}
|
||||
settings.setDistributionType(DistributionType.LOCAL);
|
||||
} else if (myUseWrapperButton.isSelected()) {
|
||||
} else if(myUseWrapperButton.isSelected()) {
|
||||
settings.setDistributionType(DistributionType.DEFAULT_WRAPPED);
|
||||
} else if(myUseWrapperWithVerificationButton.isSelected()) {
|
||||
settings.setDistributionType(DistributionType.WRAPPED);
|
||||
} else {
|
||||
} else if (myUseBundledDistributionButton.isSelected()) {
|
||||
settings.setDistributionType(DistributionType.BUNDLED);
|
||||
}
|
||||
|
||||
@@ -228,18 +245,20 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
|
||||
@Override
|
||||
protected boolean isExtraSettingModified() {
|
||||
if (myUseBundledDistributionButton.isSelected() &&
|
||||
getInitialSettings().getDistributionType() != DistributionType.BUNDLED) {
|
||||
DistributionType distributionType = getInitialSettings().getDistributionType();
|
||||
if (myUseBundledDistributionButton.isSelected() && distributionType != DistributionType.BUNDLED) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (myUseWrapperButton.isSelected() &&
|
||||
getInitialSettings().getDistributionType() != DistributionType.WRAPPED) {
|
||||
return true;
|
||||
if (myUseWrapperButton.isSelected() && distributionType != DistributionType.DEFAULT_WRAPPED) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (myUseLocalDistributionButton.isSelected() &&
|
||||
getInitialSettings().getDistributionType() != DistributionType.LOCAL) {
|
||||
if (myUseWrapperWithVerificationButton.isSelected() && distributionType != DistributionType.WRAPPED) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (myUseLocalDistributionButton.isSelected() && distributionType != DistributionType.LOCAL) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -260,7 +279,7 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
myGradleHomePathField.getTextField().setForeground(LocationSettingType.EXPLICIT_CORRECT.getColor());
|
||||
|
||||
updateWrapperControls(getInitialSettings().getExternalProjectPath());
|
||||
if (myUseWrapperButton.isSelected()) {
|
||||
if (!myUseLocalDistributionButton.isSelected()) {
|
||||
myGradleHomePathField.setEnabled(false);
|
||||
return;
|
||||
}
|
||||
@@ -282,15 +301,42 @@ public class GradleProjectSettingsControl extends AbstractExternalProjectSetting
|
||||
}
|
||||
|
||||
public void updateWrapperControls(@Nullable String linkedProjectPath) {
|
||||
myUseWrapperButton.setText(GradleBundle.message("gradle.settings.text.use.wrapper"));
|
||||
if(StringUtil.isEmpty(linkedProjectPath)) {
|
||||
myUseLocalDistributionButton.setSelected(true);
|
||||
myGradleHomePathField.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean isGradleDefaultWrapperFilesExist = GradleUtil.isGradleDefaultWrapperFilesExist(linkedProjectPath);
|
||||
if (isGradleDefaultWrapperFilesExist) {
|
||||
myUseWrapperButton.setEnabled(true);
|
||||
myUseWrapperButton.setSelected(true);
|
||||
myGradleHomePathField.setEnabled(false);
|
||||
myUseWrapperButton.setText(GradleBundle.message("gradle.settings.text.use.default_wrapper.configured"));
|
||||
} else {
|
||||
myUseWrapperButton.setEnabled(false);
|
||||
myUseLocalDistributionButton.setSelected(true);
|
||||
myGradleHomePathField.setEnabled(true);
|
||||
myUseWrapperButton.setText(GradleBundle.message("gradle.settings.text.use.default_wrapper.not_configured"));
|
||||
}
|
||||
|
||||
if(getInitialSettings().getDistributionType() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (getInitialSettings().getDistributionType()) {
|
||||
case LOCAL:
|
||||
myGradleHomePathField.setEnabled(true);
|
||||
myUseLocalDistributionButton.setSelected(true);
|
||||
break;
|
||||
case WRAPPED:
|
||||
case DEFAULT_WRAPPED:
|
||||
myGradleHomePathField.setEnabled(false);
|
||||
myUseWrapperButton.setSelected(true);
|
||||
myUseWrapperButton.setEnabled(true);
|
||||
break;
|
||||
case WRAPPED:
|
||||
myGradleHomePathField.setEnabled(false);
|
||||
myUseWrapperWithVerificationButton.setSelected(true);
|
||||
break;
|
||||
case BUNDLED:
|
||||
myGradleHomePathField.setEnabled(false);
|
||||
|
||||
@@ -20,5 +20,30 @@ package org.jetbrains.plugins.gradle.settings;
|
||||
* @since 8/23/13
|
||||
*/
|
||||
public enum DistributionType {
|
||||
BUNDLED, WRAPPED, LOCAL
|
||||
/**
|
||||
* Gradle version packaged with IDE used
|
||||
*/
|
||||
BUNDLED,
|
||||
/**
|
||||
* The default configuration of the wrapper task assumed based on manually wrapper generated files:
|
||||
* <p/>
|
||||
* Build layout with default wrapper task:
|
||||
* <pre>
|
||||
* project_dir/
|
||||
* gradlew
|
||||
* gradlew.bat
|
||||
* gradle/wrapper/
|
||||
* gradle-wrapper.jar
|
||||
* <b>gradle-wrapper.properties</b>
|
||||
* </pre>
|
||||
*/
|
||||
DEFAULT_WRAPPED,
|
||||
/**
|
||||
* Wrapper task configuration based on build.gradle script to be used.
|
||||
*/
|
||||
WRAPPED,
|
||||
/**
|
||||
* Locally installed gradle to be used
|
||||
*/
|
||||
LOCAL
|
||||
}
|
||||
|
||||
@@ -26,11 +26,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
public class GradleProjectSettings extends ExternalProjectSettings {
|
||||
|
||||
@Nullable private String myGradleHome;
|
||||
@NotNull private DistributionType distributionType;
|
||||
|
||||
public GradleProjectSettings() {
|
||||
this.distributionType = DistributionType.LOCAL;
|
||||
}
|
||||
@Nullable private DistributionType distributionType;
|
||||
|
||||
@Nullable
|
||||
public String getGradleHome() {
|
||||
@@ -41,12 +37,12 @@ public class GradleProjectSettings extends ExternalProjectSettings {
|
||||
myGradleHome = gradleHome;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Nullable
|
||||
public DistributionType getDistributionType() {
|
||||
return distributionType;
|
||||
}
|
||||
|
||||
public void setDistributionType(@NotNull DistributionType distributionType) {
|
||||
public void setDistributionType(@Nullable DistributionType distributionType) {
|
||||
this.distributionType = distributionType;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public class GradleUtil {
|
||||
}
|
||||
|
||||
@SuppressWarnings("IOResourceOpenedButNotSafelyClosed")
|
||||
public static boolean isGradleWrapperDefined(@Nullable String gradleProjectPath) {
|
||||
public static boolean isGradleDefaultWrapperFilesExist(@Nullable String gradleProjectPath) {
|
||||
return !StringUtil.isEmpty(getWrapperDistribution(gradleProjectPath));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user