Skip to content
Closed
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
9 changes: 5 additions & 4 deletions api/maven-api-settings/src/main/mdo/settings.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,15 @@
<version>1.0.0+</version>
<description>
common base class that contains code to track the source for
this instance (USER|GLOBAL)
this instance (USER|PROJECT|GLOBAL)
</description>
<codeSegments>
<codeSegment>
<version>1.0.0+</version>
<version>1.1.0+</version>
<code>
<![CDATA[
public static final String USER_LEVEL = "user-level";
public static final String PROJECT_LEVEL = "project-level";
public static final String GLOBAL_LEVEL = "global-level";

private String sourceLevel = USER_LEVEL;
Expand All @@ -64,9 +65,9 @@
{
throw new IllegalStateException( "Cannot reset sourceLevel attribute; it is already set to: " + sourceLevel );
}
else if ( !( USER_LEVEL.equals( sourceLevel ) || GLOBAL_LEVEL.equals( sourceLevel ) ) )
else if ( !( USER_LEVEL.equals( sourceLevel ) || PROJECT_LEVEL.equals( sourceLevel ) || GLOBAL_LEVEL.equals( sourceLevel ) ) )
{
throw new IllegalArgumentException( "sourceLevel must be one of: {" + USER_LEVEL + "," + GLOBAL_LEVEL + "}" );
throw new IllegalArgumentException( "sourceLevel must be one of: {" + USER_LEVEL + "," + PROJECT_LEVEL + "," + GLOBAL_LEVEL + "}" );
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ public class DefaultMavenExecutionRequest

private File userSettingsFile;

private File projectSettingsFile;

private File globalSettingsFile;

private File userToolchainsFile;
Expand Down Expand Up @@ -982,6 +984,20 @@ public MavenExecutionRequest setUserSettingsFile( File userSettingsFile )
return this;
}

@Override
public File getProjectSettingsFile()
{
return projectSettingsFile;
}

@Override
public MavenExecutionRequest setProjectSettingsFile( File projectSettingsFile )
{
this.projectSettingsFile = projectSettingsFile;

return this;
}

@Override
public File getGlobalSettingsFile()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,10 @@ public interface MavenExecutionRequest

MavenExecutionRequest setUserSettingsFile( File userSettingsFile );

File getProjectSettingsFile();

MavenExecutionRequest setProjectSettingsFile( File projectSettingsFile );

File getGlobalSettingsFile();

MavenExecutionRequest setGlobalSettingsFile( File globalSettingsFile );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,14 @@ public Settings buildSettings( File userSettingsFile )
getFile( "${maven.conf}/settings.xml", "maven.conf",
MavenSettingsBuilder.ALT_GLOBAL_SETTINGS_XML_LOCATION );

File projectSettingsFile =
getFile( "${maven.multiModuleProjectDirectory}/.mvn/settings.xml",
"maven.multiModuleProjectDirectory",
MavenSettingsBuilder.ALT_PROJECT_SETTINGS_XML_LOCATION );

SettingsBuildingRequest request = new DefaultSettingsBuildingRequest();
request.setUserSettingsFile( userSettingsFile );
request.setProjectSettingsFile( projectSettingsFile );
request.setGlobalSettingsFile( globalSettingsFile );
request.setSystemProperties( SystemProperties.getSystemProperties() );
return build( request );
Expand Down Expand Up @@ -109,6 +115,7 @@ public Settings buildSettings( MavenExecutionRequest request )
{
SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest();
settingsRequest.setUserSettingsFile( request.getUserSettingsFile() );
settingsRequest.setProjectSettingsFile( request.getProjectSettingsFile() );
settingsRequest.setGlobalSettingsFile( request.getGlobalSettingsFile() );
settingsRequest.setUserProperties( request.getUserProperties() );
settingsRequest.setSystemProperties( request.getSystemProperties() );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public interface MavenSettingsBuilder
String ROLE = MavenSettingsBuilder.class.getName();

String ALT_USER_SETTINGS_XML_LOCATION = "org.apache.maven.user-settings";
String ALT_PROJECT_SETTINGS_XML_LOCATION = "org.apache.maven.project-settings";
String ALT_GLOBAL_SETTINGS_XML_LOCATION = "org.apache.maven.global-settings";
String ALT_LOCAL_REPOSITORY_LOCATION = "maven.repo.local";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public class CLIManager

public static final char ALTERNATE_USER_SETTINGS = 's';

public static final String ALTERNATE_PROJECT_SETTINGS = "ps";

public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";

public static final char ALTERNATE_USER_TOOLCHAINS = 't';
Expand Down Expand Up @@ -137,6 +139,7 @@ public CLIManager()
options.addOption( Option.builder( Character.toString( CHECKSUM_FAILURE_POLICY ) ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums don't match" ).build() );
options.addOption( Option.builder( Character.toString( CHECKSUM_WARNING_POLICY ) ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match" ).build() );
options.addOption( Option.builder( Character.toString( ALTERNATE_USER_SETTINGS ) ).longOpt( "settings" ).desc( "Alternate path for the user settings file" ).hasArg().build() );
options.addOption( Option.builder( ALTERNATE_PROJECT_SETTINGS ).longOpt( "project-settings" ).desc( "Alternate path for the project settings file" ).hasArg().build() );
options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS ).longOpt( "global-settings" ).desc( "Alternate path for the global settings file" ).hasArg().build() );
options.addOption( Option.builder( Character.toString( ALTERNATE_USER_TOOLCHAINS ) ).longOpt( "toolchains" ).desc( "Alternate path for the user toolchains file" ).hasArg().build() );
options.addOption( Option.builder( ALTERNATE_GLOBAL_TOOLCHAINS ).longOpt( "global-toolchains" ).desc( "Alternate path for the global toolchains file" ).hasArg().build() );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ public class SettingsXmlConfigurationProcessor

public static final File DEFAULT_USER_SETTINGS_FILE = new File( USER_MAVEN_CONFIGURATION_HOME, "settings.xml" );

public static final String PROJECT_BASEDIR = System.getProperty( "maven.multiModuleProjectDirectory" );

public static final File PROJECT_MAVEN_CONFIGURATION_HOME = new File( PROJECT_BASEDIR, ".mvn" );

public static final File DEFAULT_PROJECT_SETTINGS_FILE =
new File( PROJECT_MAVEN_CONFIGURATION_HOME, "settings.xml" );

public static final File DEFAULT_GLOBAL_SETTINGS_FILE =
new File( System.getProperty( "maven.conf" ), "settings.xml" );

Expand Down Expand Up @@ -112,6 +119,24 @@ public void process( CliRequest cliRequest )
userSettingsFile = DEFAULT_USER_SETTINGS_FILE;
}

File projectSettingsFile;

if ( commandLine.hasOption( CLIManager.ALTERNATE_PROJECT_SETTINGS ) )
{
projectSettingsFile = new File( commandLine.getOptionValue( CLIManager.ALTERNATE_PROJECT_SETTINGS ) );
projectSettingsFile = resolveFile( projectSettingsFile, workingDirectory );

if ( !projectSettingsFile.isFile() )
{
throw new FileNotFoundException( "The specified project settings file does not exist: "
+ projectSettingsFile );
}
}
else
{
projectSettingsFile = DEFAULT_PROJECT_SETTINGS_FILE;
}

File globalSettingsFile;

if ( commandLine.hasOption( CLIManager.ALTERNATE_GLOBAL_SETTINGS ) )
Expand All @@ -131,10 +156,12 @@ public void process( CliRequest cliRequest )
}

request.setGlobalSettingsFile( globalSettingsFile );
request.setProjectSettingsFile( projectSettingsFile );
request.setUserSettingsFile( userSettingsFile );

SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest();
settingsRequest.setGlobalSettingsFile( globalSettingsFile );
settingsRequest.setProjectSettingsFile( projectSettingsFile );
settingsRequest.setUserSettingsFile( userSettingsFile );
settingsRequest.setSystemProperties( cliRequest.getSystemProperties() );
settingsRequest.setUserProperties( cliRequest.getUserProperties() );
Expand All @@ -146,6 +173,8 @@ public void process( CliRequest cliRequest )

LOGGER.debug( "Reading global settings from '{}'",
getLocation( settingsRequest.getGlobalSettingsSource(), settingsRequest.getGlobalSettingsFile() ) );
LOGGER.debug( "Reading project settings from '{}'",
getLocation( settingsRequest.getProjectSettingsSource(), settingsRequest.getProjectSettingsFile() ) );
LOGGER.debug( "Reading user settings from '{}'",
getLocation( settingsRequest.getUserSettingsSource(), settingsRequest.getUserSettingsFile() ) );

Expand Down
2 changes: 1 addition & 1 deletion maven-model/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ under the License.
<artifactItem>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-model</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
<type>mdo</type>
<outputDirectory>target/mdo/</outputDirectory>
<destFileName>maven.mdo</destFileName>
Expand Down
10 changes: 5 additions & 5 deletions maven-model/src/test/resources/xml/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
</parent>

<artifactId>maven-model</artifactId>
Expand All @@ -37,12 +37,12 @@ under the License.
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-model</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-xml-impl</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
</dependency>
</dependencies>

Expand All @@ -64,7 +64,7 @@ under the License.
<artifactItem>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-model</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
<type>mdo</type>
<outputDirectory>target/mdo/</outputDirectory>
<destFileName>maven.mdo</destFileName>
Expand All @@ -77,7 +77,7 @@ under the License.
<plugin>
<groupId>org.apache.maven</groupId>
<artifactId>modello-plugin-velocity</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
<executions>
<execution>
<id>velocity</id>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,16 @@ public SettingsBuildingResult build( SettingsBuildingRequest request )
getSettingsSource( request.getGlobalSettingsFile(), request.getGlobalSettingsSource() );
Settings globalSettings = readSettings( globalSettingsSource, request, problems );

Source projectSettingsSource =
getSettingsSource( request.getProjectSettingsFile(), request.getProjectSettingsSource() );
Settings projectSettings = readSettings( projectSettingsSource, request, problems );

Source userSettingsSource =
getSettingsSource( request.getUserSettingsFile(), request.getUserSettingsSource() );
Settings userSettings = readSettings( userSettingsSource, request, problems );

userSettings = settingsMerger.merge( userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL );
userSettings = settingsMerger.merge( userSettings, projectSettings, TrackableBase.PROJECT_LEVEL );

problems.setSource( "" );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,14 @@ public class DefaultSettingsBuildingRequest

private File globalSettingsFile;

private File projectSettingsFile;

private File userSettingsFile;

private SettingsSource globalSettingsSource;

private SettingsSource projectSettingsSource;

private SettingsSource userSettingsSource;

private Properties systemProperties;
Expand Down Expand Up @@ -71,6 +75,34 @@ public DefaultSettingsBuildingRequest setGlobalSettingsSource( SettingsSource gl
return this;
}

@Override
public File getProjectSettingsFile()
{
return projectSettingsFile;
}

@Override
public DefaultSettingsBuildingRequest setProjectSettingsFile( File projectSettingsFile )
{
this.projectSettingsFile = projectSettingsFile;

return this;
}

@Override
public SettingsSource getProjectSettingsSource()
{
return projectSettingsSource;
}

@Override
public DefaultSettingsBuildingRequest setProjectSettingsSource( SettingsSource projectSettingsSource )
{
this.projectSettingsSource = projectSettingsSource;

return this;
}

@Override
public File getUserSettingsFile()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,38 @@ public interface SettingsBuildingRequest
*/
SettingsBuildingRequest setGlobalSettingsSource( SettingsSource globalSettingsSource );

/**
* Gets the project settings file.
*
* @return The project settings file or {@code null} if none.
*/
File getProjectSettingsFile();

/**
* Sets the project settings file. A non-existent settings file is equivalent to empty settings. If both user
* settings and project settings are given, the user settings take precedence.
*
* @param projectSettingsFile The project settings file, may be {@code null} to disable project settings.
* @return This request, never {@code null}.
*/
SettingsBuildingRequest setProjectSettingsFile( File projectSettingsFile );

/**
* Gets the project settings source.
*
* @return The project settings source or {@code null} if none.
*/
SettingsSource getProjectSettingsSource();

/**
* Sets the project settings source. If both user settings and a project settings are given, the user settings take
* precedence.
*
* @param projectSettingsSource The project settings source, may be {@code null} to disable project settings.
* @return This request, never {@code null}.
*/
SettingsBuildingRequest setProjectSettingsSource( SettingsSource projectSettingsSource );

/**
* Gets the user settings file.
*
Expand Down
2 changes: 1 addition & 1 deletion maven-settings/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ under the License.
<artifactItem>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-settings</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
<type>mdo</type>
<outputDirectory>target/mdo/</outputDirectory>
<destFileName>settings.mdo</destFileName>
Expand Down
2 changes: 1 addition & 1 deletion maven-toolchain-model/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ under the License.
<artifactItem>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-toolchain</artifactId>
<version>4.0.0-alpha-1-SNAPSHOT</version>
<version>4.0.0-alpha-3-SNAPSHOT</version>
<type>mdo</type>
<outputDirectory>target/mdo/</outputDirectory>
<destFileName>toolchains.mdo</destFileName>
Expand Down