Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@

<properties>
<javaVersion>8</javaVersion>
<mavenVersion>3.6.3</mavenVersion>
<mavenVersion>4.0.0-alpha-6-SNAPSHOT</mavenVersion>
<project.build.outputTimestamp>2023-03-14T21:31:56Z</project.build.outputTimestamp>
</properties>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,20 @@
import java.io.StringWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import org.apache.maven.api.settings.InputLocation;
import org.apache.maven.api.settings.InputSource;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.settings.Profile;
import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.SettingsUtils;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
import org.apache.maven.settings.v4.SettingsXpp3WriterEx;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
import org.codehaus.plexus.util.xml.XMLWriter;
Expand Down Expand Up @@ -67,6 +68,14 @@ public class EffectiveSettingsMojo extends AbstractEffectiveMojo {
@Parameter(property = "showPasswords", defaultValue = "false")
private boolean showPasswords;

/**
* Output POM input location as comments.
*
* @since 3.5.0
*/
@Parameter(property = "verbose", defaultValue = "false")
private boolean verbose = false;

// ----------------------------------------------------------------------
// Public methods
// ----------------------------------------------------------------------
Expand Down Expand Up @@ -95,6 +104,10 @@ public void execute() throws MojoExecutionException {
writeEffectiveSettings(copySettings, writer);

String effectiveSettings = prettyFormat(w.toString(), encoding, false);
if (verbose) {
// tweak location tracking comment, that are put on a separate line by pretty print
effectiveSettings = effectiveSettings.replaceAll("(?m)>\\s+<!--}", "> <!-- ");
}

if (output != null) {
try {
Expand Down Expand Up @@ -147,45 +160,7 @@ private static Settings copySettings(Settings settings) {
if (settings == null) {
return null;
}

// Not a deep copy in M2.2.1 !!!
Settings clone = SettingsUtils.copySettings(settings);

List<Server> clonedServers = new ArrayList<>(settings.getServers().size());
for (Server server : settings.getServers()) {
Server clonedServer = new Server();
clonedServer.setConfiguration(server.getConfiguration());
clonedServer.setDirectoryPermissions(server.getDirectoryPermissions());
clonedServer.setFilePermissions(server.getFilePermissions());
clonedServer.setId(server.getId());
clonedServer.setPassphrase(server.getPassphrase());
clonedServer.setPassword(server.getPassword());
clonedServer.setPrivateKey(server.getPrivateKey());
clonedServer.setSourceLevel(server.getSourceLevel());
clonedServer.setUsername(server.getUsername());

clonedServers.add(clonedServer);
}
clone.setServers(clonedServers);

List<Proxy> clonedProxies = new ArrayList<>(settings.getProxies().size());
for (Proxy proxy : settings.getProxies()) {
Proxy clonedProxy = new Proxy();
clonedProxy.setActive(proxy.isActive());
clonedProxy.setHost(proxy.getHost());
clonedProxy.setId(proxy.getId());
clonedProxy.setNonProxyHosts(proxy.getNonProxyHosts());
clonedProxy.setPassword(proxy.getPassword());
clonedProxy.setPort(proxy.getPort());
clonedProxy.setProtocol(proxy.getProtocol());
clonedProxy.setSourceLevel(proxy.getSourceLevel());
clonedProxy.setUsername(proxy.getUsername());

clonedProxies.add(clonedProxy);
}
clone.setProxies(clonedProxies);

return clone;
return new Settings(settings.getDelegate());
}

/**
Expand All @@ -195,13 +170,18 @@ private static Settings copySettings(Settings settings) {
* @param writer the XML writer used, not null.
* @throws MojoExecutionException if any
*/
private static void writeEffectiveSettings(Settings settings, XMLWriter writer) throws MojoExecutionException {
private void writeEffectiveSettings(Settings settings, XMLWriter writer) throws MojoExecutionException {
cleanSettings(settings);

StringWriter sWriter = new StringWriter();
SettingsXpp3Writer settingsWriter = new SettingsXpp3Writer();
try {
settingsWriter.write(sWriter, settings);
if (verbose) {
SettingsXpp3WriterEx settingsWriter = new SettingsXpp3WriterEx();
settingsWriter.setStringFormatter(new InputLocationStringFormatter());
settingsWriter.write(sWriter, settings.getDelegate());
} else {
new SettingsXpp3Writer().write(sWriter, settings);
}
} catch (IOException e) {
throw new MojoExecutionException("Cannot serialize Settings to XML.", e);
}
Expand Down Expand Up @@ -251,4 +231,15 @@ private static String getUserName() {

return userName;
}

private static class InputLocationStringFormatter implements InputLocation.StringFormatter {
@Override
public String toString(InputLocation location) {
InputSource source = location.getSource();

String s = source.toString();

return '}' + s + ((location.getLineNumber() >= 0) ? ", line " + location.getLineNumber() : "") + ' ';
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@
import java.util.Collections;
import java.util.List;

import org.apache.maven.internal.impl.DefaultLog;
import org.apache.maven.model.Profile;
import org.apache.maven.monitor.logging.DefaultLog;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.LoggerManager;
import org.codehaus.plexus.util.IOUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Test class for the all-profiles mojo of the Help Plugin.
Expand All @@ -46,8 +46,7 @@ public class AllProfilesMojoTest extends AbstractMojoTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
interceptingLogger =
new InterceptingLog(getContainer().lookup(LoggerManager.class).getLoggerForComponent(Mojo.ROLE));
interceptingLogger = new InterceptingLog(LoggerFactory.getLogger(Mojo.ROLE));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,16 @@
import java.util.ArrayList;
import java.util.List;

import org.apache.maven.monitor.logging.DefaultLog;
import org.apache.maven.internal.impl.DefaultLog;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.components.interactivity.InputHandler;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.LoggerManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
Expand All @@ -51,8 +51,7 @@ public class EvaluateMojoTest extends AbstractMojoTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
interceptingLogger =
new InterceptingLog(getContainer().lookup(LoggerManager.class).getLoggerForComponent(Mojo.ROLE));
interceptingLogger = new InterceptingLog(LoggerFactory.getLogger(Mojo.ROLE));
}

/**
Expand Down