Skip to content

Commit f25d8dc

Browse files
authored
[MRELEASE-1139] Improve logging of sources for used credentials (#209)
Clarify precedence of credentials resolved via settings and those explicitly given.
1 parent 0f5e7a1 commit f25d8dc

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,11 @@ public interface ReleaseDescriptor {
366366
String getScmBranchBase();
367367

368368
/**
369-
* Get the id can be used to get the credentials by the server-id from the settings.xml.
369+
* Get the id which can be used to get the (optionally encrypted) credentials with the given id from the {@code settings.xml}.
370+
* Explicit credentials in {@link #getScmUsername()}, {@link #getScmPassword()}, {@link #getScmPrivateKey()} or
371+
* {@link #getScmPrivateKeyPassPhrase()} always take precedence, though.
370372
*
371-
* @return String
373+
* @return the server id of a server in {@code settings.xml}
372374
*/
373375
String getScmId();
374376

maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java

+28-7
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea
9696

9797
if (releaseDescriptor.getScmId() != null) {
9898
server = settings.getServer(releaseDescriptor.getScmId());
99+
if (server == null) {
100+
logger.warn("No server with id '{}' found in Maven settings", releaseDescriptor.getScmId());
101+
}
99102
}
100103

101104
if (server == null && repository.getProviderRepository() instanceof ScmProviderRepositoryWithHost) {
@@ -115,39 +118,57 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea
115118
}
116119

117120
if (server != null) {
118-
if (username == null) {
121+
if (username == null && server.getUsername() != null) {
122+
logger.debug(
123+
"Using username from server id '{}' found in Maven settings", releaseDescriptor.getScmId());
119124
username = server.getUsername();
120125
}
121126

122-
if (password == null) {
127+
if (password == null && server.getPassword() != null) {
128+
logger.debug(
129+
"Using password from server id '{}' found in Maven settings", releaseDescriptor.getScmId());
123130
password = decrypt(server.getPassword(), server.getId());
124131
}
125132

126-
if (privateKey == null) {
133+
if (privateKey == null && server.getPrivateKey() != null) {
134+
logger.debug(
135+
"Using private key from server id '{}' found in Maven settings",
136+
releaseDescriptor.getScmId());
127137
privateKey = server.getPrivateKey();
128138
}
129139

130-
if (passphrase == null) {
140+
if (passphrase == null && server.getPassphrase() != null) {
141+
logger.debug(
142+
"Using passphrase from server id '{}' found in Maven settings",
143+
releaseDescriptor.getScmId());
131144
passphrase = decrypt(server.getPassphrase(), server.getId());
132145
}
133146
}
134147
}
135148

136149
if (!(username == null || username.isEmpty())) {
137150
scmRepo.setUser(username);
151+
} else {
152+
logger.debug("No explicit username configured");
138153
}
139154
if (!(password == null || password.isEmpty())) {
140155
scmRepo.setPassword(password);
156+
} else {
157+
logger.debug("No explicit password configured");
141158
}
142159

143160
if (scmRepo instanceof ScmProviderRepositoryWithHost) {
144161
ScmProviderRepositoryWithHost repositoryWithHost = (ScmProviderRepositoryWithHost) scmRepo;
145162
if (!(privateKey == null || privateKey.isEmpty())) {
146163
repositoryWithHost.setPrivateKey(privateKey);
164+
} else {
165+
logger.debug("No explicit private key configured");
147166
}
148167

149168
if (!(passphrase == null || passphrase.isEmpty())) {
150169
repositoryWithHost.setPassphrase(passphrase);
170+
} else {
171+
logger.debug("No explicit passphrase configured");
151172
}
152173
}
153174

@@ -170,12 +191,12 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea
170191
return repository;
171192
}
172193

173-
private String decrypt(String str, String server) {
194+
private String decrypt(String str, String serverId) {
174195
try {
175196
return mavenCrypto.decrypt(str);
176197
} catch (MavenCryptoException e) {
177-
String msg = "Failed to decrypt password/passphrase for server " + server + ", using auth token as is: "
178-
+ e.getMessage();
198+
String msg = "Failed to decrypt password/passphrase for server with id '" + serverId
199+
+ "', using auth token as is: " + e.getMessage();
179200
if (logger.isDebugEnabled()) {
180201
logger.warn(msg, e);
181202
} else {

0 commit comments

Comments
 (0)