Skip to content

Commit f298750

Browse files
committed
pref added for custom user settings.xml in maven
1 parent 676b81e commit f298750

File tree

2 files changed

+164
-0
lines changed

2 files changed

+164
-0
lines changed

build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
patches/java-notebooks.diff
7979
patches/update-commons-lang3-3.19.0.diff
8080
patches/update-testng-7.11.0.diff
81+
patches/settings-xml.diff
8182
</string>
8283
<filterchain>
8384
<tokenfilter delimoutput=" ">

patches/settings-xml.diff

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
--- a/java/maven.embedder/src/org/netbeans/modules/maven/embedder/EmbedderConfiguration.java
2+
+++ b/java/maven.embedder/src/org/netbeans/modules/maven/embedder/EmbedderConfiguration.java
3+
@@ -27,7 +27,7 @@
4+
*
5+
* @author mkleint
6+
*/
7+
-record EmbedderConfiguration(PlexusContainer container, Properties systemProps, Properties userProps, boolean offline, File settingsXml) {
8+
+record EmbedderConfiguration(PlexusContainer container, Properties systemProps, Properties userProps, boolean offline, File settingsXml, File userSettingsXml) {
9+
10+
Properties getSystemProperties() {
11+
return systemProps();
12+
@@ -49,4 +49,8 @@
13+
return settingsXml();
14+
}
15+
16+
+ File getUserSettingsXml() {
17+
+ return userSettingsXml();
18+
}
19+
+
20+
+}
21+
--- a/java/maven.embedder/src/org/netbeans/modules/maven/embedder/EmbedderFactory.java
22+
+++ b/java/maven.embedder/src/org/netbeans/modules/maven/embedder/EmbedderFactory.java
23+
@@ -25,6 +25,7 @@
24+
import java.util.logging.Level;
25+
import java.util.logging.Logger;
26+
import java.util.prefs.Preferences;
27+
+import org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor;
28+
import org.apache.maven.artifact.repository.ArtifactRepository;
29+
import org.apache.maven.model.Model;
30+
import org.apache.maven.model.building.*;
31+
@@ -60,6 +61,7 @@
32+
33+
//same prop constant in MavenSettings.java
34+
static final String PROP_DEFAULT_OPTIONS = "defaultOptions";
35+
+ static final String PROP_USER_SETTINGS_XML = "userSettingsXml";
36+
private static final Set<String> forbidden = Set.of(
37+
"netbeans.logger.console", //NOI18N
38+
"java.util.logging.config.class", //NOI18N
39+
@@ -256,6 +258,18 @@
40+
return new File(getEffectiveMavenHome(), "conf/settings.xml");
41+
}
42+
43+
+ public static String getUserSettingsXml() {
44+
+ return getPreferences().get(PROP_USER_SETTINGS_XML, "");
45+
+ }
46+
+
47+
+ private static File getUserSettingsXmlFile() {
48+
+ String userSettingsXml = getUserSettingsXml().trim();
49+
+ if (userSettingsXml.isEmpty()) {
50+
+ return SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE;
51+
+ }
52+
+ return FileUtil.normalizeFile(new File(userSettingsXml));
53+
+ }
54+
+
55+
/**
56+
* #191267: suppresses logging from embedded Maven, since interesting results normally appear elsewhere.
57+
*/
58+
@@ -322,7 +336,7 @@
59+
60+
Properties userprops = new Properties();
61+
userprops.putAll(getCustomGlobalUserProperties());
62+
- EmbedderConfiguration configuration = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, true, getSettingsXml());
63+
+ EmbedderConfiguration configuration = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, true, getSettingsXml(), getUserSettingsXmlFile());
64+
65+
try {
66+
return new MavenEmbedder(configuration);
67+
@@ -425,7 +439,7 @@
68+
69+
Properties userprops = new Properties();
70+
userprops.putAll(getCustomGlobalUserProperties());
71+
- EmbedderConfiguration req = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, false, getSettingsXml());
72+
+ EmbedderConfiguration req = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, false, getSettingsXml(), getUserSettingsXmlFile());
73+
74+
// //TODO remove explicit activation
75+
// req.addActiveProfile("netbeans-public").addActiveProfile("netbeans-private"); //NOI18N
76+
--- a/java/maven.embedder/src/org/netbeans/modules/maven/embedder/MavenEmbedder.java
77+
+++ b/java/maven.embedder/src/org/netbeans/modules/maven/embedder/MavenEmbedder.java
78+
@@ -200,7 +200,11 @@
79+
return testSettings; // could instead make public void setSettings(Settings settingsOverride)
80+
}
81+
File settingsXml = embedderConfiguration.getSettingsXml();
82+
- long newSettingsTimestamp = settingsXml.hashCode() ^ settingsXml.lastModified() ^ SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE.lastModified();
83+
+ File userSettingsXml = embedderConfiguration.getUserSettingsXml();
84+
+ long newSettingsTimestamp = settingsXml.hashCode() ^ settingsXml.lastModified();
85+
+ if (userSettingsXml != null) {
86+
+ newSettingsTimestamp ^= userSettingsXml.hashCode() ^ userSettingsXml.lastModified();
87+
+ }
88+
// could be included but currently constant: hashCode() of those files; getSystemProperties.hashCode()
89+
if (settings != null && settingsTimestamp == newSettingsTimestamp) {
90+
LOG.log(Level.FINER, "settings.xml cache hit for {0}", this);
91+
@@ -209,7 +213,7 @@
92+
LOG.log(Level.FINE, "settings.xml cache miss for {0}", this);
93+
SettingsBuildingRequest req = new DefaultSettingsBuildingRequest();
94+
req.setGlobalSettingsFile(settingsXml);
95+
- req.setUserSettingsFile(SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE);
96+
+ req.setUserSettingsFile(userSettingsXml);
97+
req.setSystemProperties(getSystemProperties());
98+
req.setUserProperties(embedderConfiguration.getUserProperties());
99+
try {
100+
@@ -587,8 +591,9 @@
101+
if (settingsXml !=null && settingsXml.exists()) {
102+
req.setGlobalSettingsFile(settingsXml);
103+
}
104+
- if (SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE != null && SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE.exists()) {
105+
- req.setUserSettingsFile(SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE);
106+
+ File userSettingsXml = embedderConfiguration.getUserSettingsXml();
107+
+ if (userSettingsXml != null && userSettingsXml.exists()) {
108+
+ req.setUserSettingsFile(userSettingsXml);
109+
}
110+
111+
req.setSystemProperties(getSystemProperties());
112+
--- a/java/maven/src/org/netbeans/modules/maven/options/MavenSettings.java
113+
+++ b/java/maven/src/org/netbeans/modules/maven/options/MavenSettings.java
114+
@@ -77,6 +77,7 @@
115+
private static final String PROP_VM_OPTIONS_WRAP = "vmOptionsWrap";
116+
private static final String PROP_DEFAULT_JDK = "defaultJdk";
117+
private static final String PROP_PREFER_WRAPPER = "preferWrapper"; //NOI18N
118+
+ private static final String PROP_USER_SETTINGS_XML = "userSettingsXml";
119+
120+
//these are from former versions (6.5) and are here only for conversion
121+
private static final String PROP_DEBUG = "showDebug"; // NOI18N
122+
@@ -255,6 +256,27 @@
123+
}
124+
}
125+
126+
+ public String getUserSettingsXml() {
127+
+ return EmbedderFactory.getUserSettingsXml();
128+
+ }
129+
+
130+
+ public void setUserSettingsXml(String path) {
131+
+ String normalized = path != null ? path.trim() : "";
132+
+ String old = getPreferences().get(PROP_USER_SETTINGS_XML, "");
133+
+
134+
+ if (old.equals(normalized)) {
135+
+ return;
136+
+ }
137+
+
138+
+ if (normalized.isEmpty()) {
139+
+ getPreferences().remove(PROP_USER_SETTINGS_XML);
140+
+ } else {
141+
+ getPreferences().put(PROP_USER_SETTINGS_XML, normalized);
142+
+ }
143+
+
144+
+ EmbedderFactory.resetCachedEmbedders();
145+
+ }
146+
+
147+
public boolean isVMOptionsWrap() {
148+
return getPreferences().getBoolean(PROP_VM_OPTIONS_WRAP, true);
149+
}
150+
--- a/java/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java
151+
+++ b/java/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java
152+
@@ -531,6 +531,11 @@
153+
if (config.isUpdateSnapshots()) {
154+
toRet.add("--update-snapshots");//NOI18N
155+
}
156+
+ String userSettingsXml = MavenSettings.getDefault().getUserSettingsXml();
157+
+ if (!userSettingsXml.isEmpty()) {
158+
+ toRet.add("--settings");
159+
+ toRet.add(userSettingsXml);
160+
+ }
161+
if (config.getReactorStyle() != RunConfig.ReactorStyle.NONE) {
162+
File basedir = config.getExecutionDirectory();
163+
MavenProject mp = NbMavenProject.getPartialProject(config.getMavenProject());

0 commit comments

Comments
 (0)