Skip to content

Commit 42c0848

Browse files
author
Dave Syer
committed
Improve implementation of settings home
1 parent a479d00 commit 42c0848

File tree

2 files changed

+51
-54
lines changed

2 files changed

+51
-54
lines changed

launcher/src/main/java/org/springframework/boot/loader/thin/MavenSettingsReader.java

Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,40 @@ public class MavenSettingsReader {
4949

5050
private static final Logger log = LoggerFactory.getLogger(MavenSettingsReader.class);
5151

52-
private final String homeDir;
52+
private final String settingsDir;
5353

5454
public MavenSettingsReader() {
5555
this(null);
5656
}
5757

58-
public MavenSettingsReader(String homeDir) {
58+
public MavenSettingsReader(String dir) {
59+
String homeDir = dir;
5960
if (homeDir == null) {
6061
homeDir = System.getProperty("settings.home");
62+
} else {
63+
// If user set thin.root we look in the parent as well
64+
if (!new File(homeDir, "settings.xml").exists()) {
65+
homeDir = new File(homeDir).getParent();
66+
}
67+
}
68+
if (homeDir==null || !new File(homeDir, "settings.xml").exists()) {
6169
if (homeDir == null) {
6270
homeDir = System.getProperty("maven.repo.local");
6371
if (homeDir != null) {
6472
homeDir = new File(homeDir).getParent();
65-
if (homeDir != null) {
66-
homeDir = new File(homeDir).getParent();
67-
} else {
68-
homeDir = System.getProperty("user.home");
73+
if (homeDir == null || !new File(homeDir, "settings.xml").exists()) {
74+
homeDir = null;
6975
}
70-
} else {
71-
homeDir = System.getProperty("user.home");
76+
}
77+
}
78+
if (homeDir == null) {
79+
homeDir = System.getProperty("user.home");
80+
if (homeDir != null) {
81+
homeDir = new File(homeDir, ".m2").getAbsolutePath();
7282
}
7383
}
7484
}
75-
this.homeDir = homeDir;
85+
this.settingsDir = homeDir;
7686
}
7787

7888
public MavenSettings readSettings() {
@@ -101,32 +111,9 @@ public static void applySettings(MavenSettings settings, DefaultRepositorySystem
101111
}
102112

103113
private Settings loadSettings() {
104-
File settingsFile = new File(this.homeDir, ".m2/settings.xml");
114+
File settingsFile = new File(this.settingsDir, "settings.xml");
105115
if (settingsFile.exists()) {
106116
log.info("Reading settings from: " + settingsFile);
107-
} else {
108-
log.info("No settings found at: " + settingsFile);
109-
settingsFile = new File(this.homeDir, "../settings.xml");
110-
if (settingsFile.exists()) {
111-
log.info("Reading settings from: " + settingsFile);
112-
} else {
113-
String home = System.getProperty("maven.repo.local");
114-
if (home != null
115-
&& !new File(home).getAbsolutePath().equals(new File(this.homeDir).getAbsolutePath())) {
116-
settingsFile = new File(home, "../settings.xml");
117-
if (settingsFile.exists()) {
118-
log.info("Reading settings from: " + settingsFile);
119-
}
120-
} else {
121-
home = System.getProperty("user.home");
122-
if (!new File(home).getAbsolutePath().equals(new File(this.homeDir).getAbsolutePath())) {
123-
settingsFile = new File(home, ".m2/settings.xml");
124-
if (settingsFile.exists()) {
125-
log.info("Reading settings from: " + settingsFile);
126-
}
127-
}
128-
}
129-
}
130117
}
131118
return loadSettings(settingsFile);
132119
}
@@ -167,10 +154,10 @@ private void setField(Class<?> sourceClass, String fieldName, Object target, Obj
167154

168155
private class SpringBootSecDispatcher extends DefaultSecDispatcher {
169156

170-
private static final String SECURITY_XML = ".m2/settings-security.xml";
157+
private static final String SECURITY_XML = "settings-security.xml";
171158

172159
SpringBootSecDispatcher() {
173-
File file = new File(MavenSettingsReader.this.homeDir, SECURITY_XML);
160+
File file = new File(MavenSettingsReader.this.settingsDir, SECURITY_XML);
174161
this._configurationFile = file.getAbsolutePath();
175162
try {
176163
this._cipher = new DefaultPlexusCipher();

launcher/src/test/java/org/springframework/boot/loader/thin/MavenSettingsReaderTests.java

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@
3333
public class MavenSettingsReaderTests {
3434

3535
@Test
36-
public void canReadSettings() {
36+
public void canReadSettingsInParent() {
3737
MavenSettingsReader reader = new MavenSettingsReader(
38-
"src/test/resources/settings/proxy");
38+
"src/test/resources/settings/proxy/.m2/repository");
3939
MavenSettings settings = reader.readSettings();
4040
assertThat(settings).isNotNull();
4141
}
4242

4343
@Test
44-
public void canReadSettingsAtThinRoot() {
44+
public void canReadSettings() {
4545
MavenSettingsReader reader = new MavenSettingsReader(
4646
"src/test/resources/settings/proxy/.m2");
4747
MavenSettings settings = reader.readSettings();
@@ -66,10 +66,28 @@ public void canReadSettingsAtMavenRepoLocal() {
6666
}
6767
}
6868

69+
@Test
70+
public void canReadSettingsAtSettingsHome() {
71+
System.setProperty("settings.home",
72+
"src/test/resources/settings/proxy/.m2");
73+
try {
74+
75+
MavenSettingsReader reader = new MavenSettingsReader();
76+
MavenSettings settings = reader.readSettings();
77+
assertThat(settings).isNotNull();
78+
RemoteRepository remote = new RemoteRepository.Builder("central", null, "https://central-mirror.example.com/maven2")
79+
.setContentType("default").build();
80+
RemoteRepository mirror = settings.getMirrorSelector().getMirror(remote);
81+
assertThat(mirror).isNotNull();
82+
} finally {
83+
System.clearProperty("settings.home");
84+
}
85+
}
86+
6987
@Test
7088
public void proxyConfiguration() {
7189
MavenSettingsReader reader = new MavenSettingsReader(
72-
"src/test/resources/settings/proxy");
90+
"src/test/resources/settings/proxy/.m2/repository");
7391
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
7492
MavenSettingsReader.applySettings(reader.readSettings(), session);
7593
RemoteRepository repository = new RemoteRepository.Builder("my-server", "default",
@@ -88,7 +106,7 @@ public void proxyConfiguration() {
88106
@Test
89107
public void repositoryConfiguration() {
90108
MavenSettingsReader reader = new MavenSettingsReader(
91-
"src/test/resources/settings/profile");
109+
"src/test/resources/settings/profile/.m2/repository");
92110
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
93111
MavenSettings settings = reader.readSettings();
94112
assertThat(settings.getActiveProfiles().get(0).getRepositories().get(0))
@@ -98,9 +116,7 @@ public void repositoryConfiguration() {
98116

99117
@Test
100118
public void repositorySnapshotsEnabled() {
101-
MavenSettingsReader reader = new MavenSettingsReader(
102-
"src/test/resources/settings/proxy");
103-
reader = new MavenSettingsReader("src/test/resources/settings/snapshots/enabled");
119+
MavenSettingsReader reader = new MavenSettingsReader("src/test/resources/settings/snapshots/enabled/.m2");
104120
MavenSettings settings = reader.readSettings();
105121
Repository repo = settings.getActiveProfiles().get(0).getRepositories().get(0);
106122
assertThat(repo).isNotNull();
@@ -110,9 +126,7 @@ public void repositorySnapshotsEnabled() {
110126
@Test
111127
public void repositorySnapshotsDisabled() {
112128
MavenSettingsReader reader = new MavenSettingsReader(
113-
"src/test/resources/settings/proxy");
114-
reader = new MavenSettingsReader(
115-
"src/test/resources/settings/snapshots/disabled");
129+
"src/test/resources/settings/snapshots/disabled/.m2/repository");
116130
MavenSettings settings = reader.readSettings();
117131
Repository repo = settings.getActiveProfiles().get(0).getRepositories().get(0);
118132
assertThat(repo).isNotNull();
@@ -122,9 +136,7 @@ public void repositorySnapshotsDisabled() {
122136
@Test
123137
public void repositorySnapshotsDefault() {
124138
MavenSettingsReader reader = new MavenSettingsReader(
125-
"src/test/resources/settings/proxy");
126-
reader = new MavenSettingsReader(
127-
"src/test/resources/settings/snapshots/defaultWithNoSnapshotsElement");
139+
"src/test/resources/settings/snapshots/defaultWithNoSnapshotsElement/.m2/repository");
128140
MavenSettings settings = reader.readSettings();
129141
Repository repo = settings.getActiveProfiles().get(0).getRepositories().get(0);
130142
assertThat(repo).isNotNull();
@@ -134,9 +146,7 @@ public void repositorySnapshotsDefault() {
134146
@Test
135147
public void repositorySnapshotsDefaultWithSnapshots() {
136148
MavenSettingsReader reader = new MavenSettingsReader(
137-
"src/test/resources/settings/proxy");
138-
reader = new MavenSettingsReader(
139-
"src/test/resources/settings/snapshots/defaultWithSnapshotsElement");
149+
"src/test/resources/settings/snapshots/defaultWithSnapshotsElement/.m2/repository");
140150
MavenSettings settings = reader.readSettings();
141151
Repository repo = settings.getActiveProfiles().get(0).getRepositories().get(0);
142152
assertThat(repo).isNotNull();
@@ -146,7 +156,7 @@ public void repositorySnapshotsDefaultWithSnapshots() {
146156
@Test
147157
public void credentialsConfiguration() {
148158
MavenSettingsReader reader = new MavenSettingsReader(
149-
"src/test/resources/settings/creds");
159+
"src/test/resources/settings/creds/.m2/repository");
150160
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
151161
MavenSettings settings = reader.readSettings();
152162
assertThat(settings.getActiveProfiles().get(0).getRepositories().get(0))
@@ -166,7 +176,7 @@ public void credentialsConfiguration() {
166176
@Test
167177
public void mirrorConfiguration() {
168178
MavenSettingsReader reader = new MavenSettingsReader(
169-
"src/test/resources/settings/mirror");
179+
"src/test/resources/settings/mirror/.m2/repository");
170180
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
171181
MavenSettings settings = reader.readSettings();
172182
assertThat(settings.getActiveProfiles().get(0).getRepositories().get(0))

0 commit comments

Comments
 (0)