Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#280: configure maven properly #305

Merged
merged 34 commits into from
May 16, 2024
Merged
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1d62617
first implementation
mvomiero Apr 19, 2024
6b07d90
first implementation
mvomiero Apr 19, 2024
46968c2
implements variable replacement
mvomiero Apr 19, 2024
b25e444
code refactioring
mvomiero Apr 22, 2024
cd224c6
adds check for existence of settings file
mvomiero Apr 22, 2024
ded8e28
Merge remote-tracking branch 'upstream/main' into enhancement/280-con…
mvomiero Apr 22, 2024
144eaf0
code refactoring
mvomiero Apr 22, 2024
e812881
code refactoring
mvomiero Apr 22, 2024
fc33dad
code cleanup
mvomiero Apr 23, 2024
88a1bc0
Merge remote-tracking branch 'upstream/main' into enhancement/280-con…
mvomiero Apr 23, 2024
5d601f3
renames devon folder to ide
mvomiero Apr 23, 2024
c986f19
Merge branch 'main' into enhancement/280-configureMaven
mvomiero Apr 26, 2024
02242af
implement comments PR
mvomiero Apr 26, 2024
f56485f
implement NoSuchFileException for missing settings template
mvomiero Apr 26, 2024
5774081
implement retrieveGitUrl for GitContext
mvomiero Apr 26, 2024
bd97503
override gitcontextmock
mvomiero Apr 26, 2024
8ad4704
implement logs for errors
mvomiero Apr 29, 2024
5c12573
Merge remote-tracking branch 'upstream/main' into enhancement/280-con…
mvomiero Apr 29, 2024
20f28bd
implement change requests
mvomiero Apr 29, 2024
494c22a
reformat error message
mvomiero Apr 30, 2024
9bc1c21
implement log messages for errors
mvomiero Apr 30, 2024
ba63a41
Merge remote-tracking branch 'upstream/main' into enhancement/280-con…
mvomiero Apr 30, 2024
1f7d2c5
link to docu conf page if there is a problem by the creation of some …
mvomiero Apr 30, 2024
49c58d9
correct MAVEN_ARGS variable in documentation
mvomiero Apr 30, 2024
06d13db
typo
mvomiero Apr 30, 2024
0759e6a
set constants and adjust paths
mvomiero May 3, 2024
51ff292
implement change requests
mvomiero May 3, 2024
c051756
merge upstream main into branch
mvomiero May 7, 2024
5b5be73
correct paths for templates and conf as change requests
mvomiero May 7, 2024
dca2b58
Merge branch 'main' into enhancement/280-configureMaven
hohwille May 7, 2024
e3743fe
Merge branch 'enhancement/280-configureMaven' of github.com:mvomiero/…
mvomiero May 8, 2024
e8133dd
add settingsSecurityFile as parameter for mvn encryption
mvomiero May 8, 2024
86a2206
Merge branch 'main' into enhancement/280-configureMaven
mvomiero May 8, 2024
d746a46
use linkset instead of list
mvomiero May 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
use linkset instead of list
  • Loading branch information
mvomiero committed May 10, 2024
commit d746a46199c39b50ea75ff5980d9d3fc993f9457
19 changes: 8 additions & 11 deletions cli/src/main/java/com/devonfw/tools/ide/tool/mvn/Mvn.java
Original file line number Diff line number Diff line change
@@ -16,9 +16,8 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -34,7 +33,7 @@ public class Mvn extends PluginBasedCommandlet {
/** The name of the settings.xml */
public static final String SETTINGS_FILE = "settings.xml";

private static final String M2_REPO = ".m2";
private static final String M2_CONFIG_FOLDER = ".m2";

private static final String SETTINGS_SECURITY_FILE = "settings-security.xml";

@@ -80,7 +79,7 @@ public void postInstall() {
}

Path settingsFile = this.context.getConfPath().resolve(MVN_CONFIG_FOLDER).resolve(SETTINGS_FILE);
if (!Files.exists(settingsFile)) {
if (!Files.exists(settingsFile) && Files.exists(settingsSecurityFile)) {
Step step = this.context.newStep("Create mvn settings file at " + settingsFile);
try {
createSettingsFile(settingsFile, settingsSecurityFile);
@@ -122,7 +121,7 @@ private void createSettingsFile(Path settingsFile, Path settingsSecurityFile) {
Path settingsTemplate = this.context.getSettingsPath().resolve(IdeContext.FOLDER_TEMPLATES).resolve(IdeContext.FOLDER_CONF).resolve(MVN_CONFIG_FOLDER)
.resolve(SETTINGS_FILE);
if (!Files.exists(settingsTemplate)) {
settingsTemplate = this.context.getSettingsPath().resolve(IdeContext.FOLDER_LEGACY_TEMPLATES).resolve(IdeContext.FOLDER_CONF).resolve(M2_REPO)
settingsTemplate = this.context.getSettingsPath().resolve(IdeContext.FOLDER_LEGACY_TEMPLATES).resolve(IdeContext.FOLDER_CONF).resolve(M2_CONFIG_FOLDER)
.resolve(SETTINGS_FILE);
if (!Files.exists(settingsTemplate)) {
this.context.warning(SETTINGS_FILE + " template not found in settings folder. " + ERROR_SETTINGS_FILE_MESSAGE, settingsFile);
@@ -142,7 +141,7 @@ private void createSettingsFile(Path settingsFile, Path settingsSecurityFile) {
}

if (!gitSettingsUrl.equals(gitContext.DEFAULT_SETTINGS_GIT_URL)) {
List<String> variables = findVariables(content);
Set<String> variables = findVariables(content);
for (String variable : variables) {
String secret = getEncryptedPassword(variable, settingsSecurityFile);
content = content.replace("$[" + variable + "]", secret);
@@ -170,15 +169,13 @@ private String getEncryptedPassword(String variable, Path settingsSecurityFile)
return encryptedPassword;
}

private List<String> findVariables(String content) {
private Set<String> findVariables(String content) {

List<String> variables = new ArrayList<>();
Set<String> variables = new LinkedHashSet<>();
Matcher matcher = VARIABLE_PATTERN.matcher(content);
while (matcher.find()) {
String variableName = matcher.group(1);
if (!variables.contains(variableName)) {
variables.add(variableName);
}
variables.add(variableName);
}
return variables;
}
Loading