/** * Creates a new settings builder instance. * * @return The new settings builder instance, never {@code null}. */ public DefaultSettingsBuilder newInstance() { DefaultSettingsBuilder builder = new DefaultSettingsBuilder(); builder.setSettingsReader( newSettingsReader() ); builder.setSettingsWriter( newSettingsWriter() ); builder.setSettingsValidator( newSettingsValidator() ); return builder; }
private boolean hasErrors( List<SettingsProblem> problems ) { if ( problems != null ) { for ( SettingsProblem problem : problems ) { if ( SettingsProblem.Severity.ERROR.compareTo( problem.getSeverity() ) >= 0 ) { return true; } } } return false; }
private Settings build( SettingsBuildingRequest request ) throws IOException, XmlPullParserException { try { return settingsBuilder.build( request ).getEffectiveSettings(); } catch ( SettingsBuildingException e ) { throw (IOException) new IOException( e.getMessage() ).initCause( e ); } }
request.setUserSettingsFile( userSettingsFile ); SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); settingsRequest.setGlobalSettingsFile( globalSettingsFile ); settingsRequest.setUserSettingsFile( userSettingsFile ); settingsRequest.setSystemProperties( cliRequest.getSystemProperties() ); settingsRequest.setUserProperties( cliRequest.getUserProperties() ); + getLocation( settingsRequest.getGlobalSettingsSource(), settingsRequest.getGlobalSettingsFile() ) ); logger.debug( "Reading user settings from " + getLocation( settingsRequest.getUserSettingsSource(), settingsRequest.getUserSettingsFile() ) ); SettingsBuildingResult settingsResult = settingsBuilder.build( settingsRequest ); populateFromSettings( request, settingsResult.getEffectiveSettings() ); if ( !settingsResult.getProblems().isEmpty() && logger.isWarnEnabled() ) for ( SettingsProblem problem : settingsResult.getProblems() ) logger.warn( problem.getMessage() + " @ " + problem.getLocation() );
public Settings buildSettings( File userSettingsFile ) throws IOException, XmlPullParserException { File globalSettingsFile = getFile( "${maven.conf}/settings.xml", "maven.conf", MavenSettingsBuilder.ALT_GLOBAL_SETTINGS_XML_LOCATION ); SettingsBuildingRequest request = new DefaultSettingsBuildingRequest(); request.setUserSettingsFile( userSettingsFile ); request.setGlobalSettingsFile( globalSettingsFile ); request.setSystemProperties( SystemProperties.getSystemProperties() ); return build( request ); }
@Override public SettingsBuildingResult build( SettingsBuildingRequest request ) throws SettingsBuildingException { DefaultSettingsProblemCollector problems = new DefaultSettingsProblemCollector( null ); Source globalSettingsSource = getSettingsSource( request.getGlobalSettingsFile(), request.getGlobalSettingsSource() ); Settings globalSettings = readSettings( globalSettingsSource, request, problems ); Source userSettingsSource = getSettingsSource( request.getUserSettingsFile(), request.getUserSettingsSource() ); Settings userSettings = readSettings( userSettingsSource, request, problems ); settingsMerger.merge( userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL ); problems.setSource( "" ); userSettings = interpolate( userSettings, request, problems ); // for the special case of a drive-relative Windows path, make sure it's absolute to save plugins from trouble String localRepository = userSettings.getLocalRepository(); if ( localRepository != null && localRepository.length() > 0 ) { File file = new File( localRepository ); if ( !file.isAbsolute() && file.getPath().startsWith( File.separator ) ) { userSettings.setLocalRepository( file.getAbsolutePath() ); } } if ( hasErrors( problems.getProblems() ) ) { throw new SettingsBuildingException( problems.getProblems() ); } return new DefaultSettingsBuildingResult( userSettings, problems.getProblems() ); }
private static String toMessage( List<SettingsProblem> problems ) { StringWriter buffer = new StringWriter( 1024 ); PrintWriter writer = new PrintWriter( buffer ); writer.print( problems.size() ); writer.print( ( problems.size() == 1 ) ? " problem was " : " problems were " ); writer.print( "encountered while building the effective settings" ); writer.println(); for ( SettingsProblem problem : problems ) { writer.print( "[" ); writer.print( problem.getSeverity() ); writer.print( "] " ); writer.print( problem.getMessage() ); writer.print( " @ " ); writer.println( problem.getLocation() ); } return buffer.toString(); }
logger.debug( problem.getMessage(), problem.getException() );
interpolator.addValueSource( new PropertiesBasedValueSource( request.getUserProperties() ) ); interpolator.addValueSource( new PropertiesBasedValueSource( request.getSystemProperties() ) ); problems.add( SettingsProblem.Severity.WARNING, "Failed to use environment variables for interpolation: " + e.getMessage(), -1, -1, e ); problems.add( SettingsProblem.Severity.ERROR, "Failed to interpolate settings: " + e.getMessage(), -1, -1, e ); problems.add( SettingsProblem.Severity.ERROR, "Failed to interpolate settings: " + e.getMessage(), -1, -1, e ); return settings;
@Override public String toString() { StringBuilder buffer = new StringBuilder( 128 ); buffer.append( '[' ).append( getSeverity() ).append( "] " ); buffer.append( getMessage() ); buffer.append( " @ " ).append( getLocation() ); return buffer.toString(); }
@Override public void add( SettingsProblem.Severity severity, String message, int line, int column, Exception cause ) { if ( line <= 0 && column <= 0 && ( cause instanceof SettingsParseException ) ) { SettingsParseException e = (SettingsParseException) cause; line = e.getLineNumber(); column = e.getColumnNumber(); } SettingsProblem problem = new DefaultSettingsProblem( message, severity, source, line, column, cause ); problems.add( problem ); }
@Override public String getLocation() { StringBuilder buffer = new StringBuilder( 256 ); if ( getSource().length() > 0 ) { if ( buffer.length() > 0 ) { buffer.append( ", " ); } buffer.append( getSource() ); } if ( getLineNumber() > 0 ) { if ( buffer.length() > 0 ) { buffer.append( ", " ); } buffer.append( "line " ).append( getLineNumber() ); } if ( getColumnNumber() > 0 ) { if ( buffer.length() > 0 ) { buffer.append( ", " ); } buffer.append( "column " ).append( getColumnNumber() ); } return buffer.toString(); }
problems.setSource( settingsSource.getLocation() ); problems.add( SettingsProblem.Severity.WARNING, e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e ); problems.add( SettingsProblem.Severity.FATAL, "Non-parseable settings " + settingsSource.getLocation() + ": " + e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e ); return new Settings(); problems.add( SettingsProblem.Severity.FATAL, "Non-readable settings " + settingsSource.getLocation() + ": " + e.getMessage(), -1, -1, e ); return new Settings();
private static void addViolation( SettingsProblemCollector problems, Severity severity, String fieldName, String sourceHint, String message ) { StringBuilder buffer = new StringBuilder( 256 ); buffer.append( '\'' ).append( fieldName ).append( '\'' ); if ( sourceHint != null ) { buffer.append( " for " ).append( sourceHint ); } buffer.append( ' ' ).append( message ); problems.add( severity, buffer.toString(), -1, -1, null ); }
/** * Creates a new exception with the specified problems. * * @param problems The problems that causes this exception, may be {@code null}. */ public SettingsBuildingException( List<SettingsProblem> problems ) { super( toMessage( problems ) ); this.problems = new ArrayList<>(); if ( problems != null ) { this.problems.addAll( problems ); } }
/** * Gets the settings URL of this model source. * * @return The underlying settings URL, never {@code null}. * @deprecated instead use {@link #getUrl()} */ @Deprecated public URL getSettingsUrl() { return getUrl(); }
/** * Gets the character sequence of this settings source. * * @return The underlying character stream, never {@code null}. * @deprecated instead use {@link #getContent()} */ @Deprecated public String getSettings() { return getContent(); }
/** * Gets the settings file of this model source. * * @return The underlying settings file, never {@code null}. * @deprecated instead use {@link #getFile()} */ @Deprecated public File getSettingsFile() { return getFile(); } }
/** @since 2.1 */ public Settings buildSettings( MavenExecutionRequest request ) throws IOException, XmlPullParserException { SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); settingsRequest.setUserSettingsFile( request.getUserSettingsFile() ); settingsRequest.setGlobalSettingsFile( request.getGlobalSettingsFile() ); settingsRequest.setUserProperties( request.getUserProperties() ); settingsRequest.setSystemProperties( request.getSystemProperties() ); return build( settingsRequest ); }
problems.add( new DefaultSettingsProblem( "Failed to decrypt password for server " + server.getId() + ": " + e.getMessage(), Severity.ERROR, "server: " + server.getId(), -1, -1, e ) ); problems.add( new DefaultSettingsProblem( "Failed to decrypt passphrase for server " + server.getId() + ": " + e.getMessage(), Severity.ERROR, "server: " + server.getId(), -1, -1, e ) ); problems.add( new DefaultSettingsProblem( "Failed to decrypt password for proxy " + proxy.getId() + ": " + e.getMessage(), Severity.ERROR, "proxy: " + proxy.getId(), -1, -1, e ) );