001 package org.apache.maven.settings.building;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023 import java.util.Properties;
024
025 /**
026 * Collects settings that control the building of effective settings.
027 *
028 * @author Benjamin Bentmann
029 */
030 public interface SettingsBuildingRequest
031 {
032
033 /**
034 * Gets the global settings file.
035 *
036 * @return The global settings file or {@code null} if none.
037 */
038 File getGlobalSettingsFile();
039
040 /**
041 * Sets the global settings file. A non-existent settings file is equivalent to empty settings. If both user
042 * settings and global settings are given, the user settings take precedence.
043 *
044 * @param globalSettingsFile The global settings file, may be {@code null} to disable global settings.
045 * @return This request, never {@code null}.
046 */
047 SettingsBuildingRequest setGlobalSettingsFile( File globalSettingsFile );
048
049 /**
050 * Gets the global settings source.
051 *
052 * @return The global settings source or {@code null} if none.
053 */
054 SettingsSource getGlobalSettingsSource();
055
056 /**
057 * Sets the global settings source. If both user settings and a global settings are given, the user settings take
058 * precedence.
059 *
060 * @param globalSettingsSource The global settings source, may be {@code null} to disable global settings.
061 * @return This request, never {@code null}.
062 */
063 SettingsBuildingRequest setGlobalSettingsSource( SettingsSource globalSettingsSource );
064
065 /**
066 * Gets the user settings file.
067 *
068 * @return The user settings file or {@code null} if none.
069 */
070 File getUserSettingsFile();
071
072 /**
073 * Sets the user settings file. A non-existent settings file is equivalent to empty settings. If both a user
074 * settings file and a global settings file are given, the user settings take precedence.
075 *
076 * @param userSettingsFile The user settings file, may be {@code null} to disable user settings.
077 * @return This request, never {@code null}.
078 */
079 SettingsBuildingRequest setUserSettingsFile( File userSettingsFile );
080
081 /**
082 * Gets the user settings source.
083 *
084 * @return The user settings source or {@code null} if none.
085 */
086 SettingsSource getUserSettingsSource();
087
088 /**
089 * Sets the user settings source. If both user settings and a global settings are given, the user settings take
090 * precedence.
091 *
092 * @param userSettingsSource The user settings source, may be {@code null} to disable user settings.
093 * @return This request, never {@code null}.
094 */
095 SettingsBuildingRequest setUserSettingsSource( SettingsSource userSettingsSource );
096
097 /**
098 * Gets the system properties to use for interpolation. The system properties are collected from the runtime
099 * environment like {@link System#getProperties()} and environment variables.
100 *
101 * @return The system properties, never {@code null}.
102 */
103 Properties getSystemProperties();
104
105 /**
106 * Sets the system properties to use for interpolation. The system properties are collected from the runtime
107 * environment like {@link System#getProperties()} and environment variables.
108 *
109 * @param systemProperties The system properties, may be {@code null}.
110 * @return This request, never {@code null}.
111 */
112 SettingsBuildingRequest setSystemProperties( Properties systemProperties );
113
114 /**
115 * Gets the user properties to use for interpolation. The user properties have been configured directly by the user
116 * on his discretion, e.g. via the {@code -Dkey=value} parameter on the command line.
117 *
118 * @return The user properties, never {@code null}.
119 */
120 Properties getUserProperties();
121
122 /**
123 * Sets the user properties to use for interpolation. The user properties have been configured directly by the user
124 * on his discretion, e.g. via the {@code -Dkey=value} parameter on the command line.
125 *
126 * @param userProperties The user properties, may be {@code null}.
127 * @return This request, never {@code null}.
128 */
129 SettingsBuildingRequest setUserProperties( Properties userProperties );
130
131 }