diff --git a/.gitattributes b/.gitattributes
index 225f8f119c..3bb3b5ea8a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,8 @@
-*.jar -text -crlf
-*.graffle -text -crlf
+# Auto detect text files and perform LF normalization
+* text=auto
+
+*.java text diff=java
+*.html text diff=html
+*.css text
+*.js text
+*.sql text
diff --git a/.gitignore b/.gitignore
index adc6c00321..432006ec5a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ bin/
.idea
.DS_Store
+/bootstrap
+/dependencies.xml
diff --git a/apache-maven/NOTICE.txt b/apache-maven/NOTICE.txt
index 62abffbfa3..e744352531 100644
--- a/apache-maven/NOTICE.txt
+++ b/apache-maven/NOTICE.txt
@@ -5,7 +5,7 @@
=========================================================================
Apache Maven
-Copyright 2001-2011 The Apache Software Foundation
+Copyright 2001-2012 The Apache Software Foundation
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
diff --git a/apache-maven/README.txt b/apache-maven/README.txt
index c337ce8e6d..dc55c01f4f 100644
--- a/apache-maven/README.txt
+++ b/apache-maven/README.txt
@@ -40,18 +40,18 @@
1) Unpack the archive where you would like to store the binaries, eg:
Unix-based Operating Systems (Linux, Solaris and Mac OS X)
- tar zxvf apache-maven-3.0.x.tar.gz
+ tar zxvf apache-maven-3.x.y.tar.gz
Windows 2000/XP
- unzip apache-maven-3.0.x.zip
+ unzip apache-maven-3.x.y.zip
- 2) A directory called "apache-maven-3.0.x" will be created.
+ 2) A directory called "apache-maven-3.x.y" will be created.
3) Add the bin directory to your PATH, eg:
Unix-based Operating Systems (Linux, Solaris and Mac OS X)
- export PATH=/usr/local/apache-maven-3.0.x/bin:$PATH
+ export PATH=/usr/local/apache-maven-3.x.y/bin:$PATH
Windows 2000/XP
- set PATH="c:\program files\apache-maven-3.0.x\bin";%PATH%
+ set PATH="c:\program files\apache-maven-3.x.y\bin";%PATH%
4) Make sure JAVA_HOME is set to the location of your JDK
@@ -71,7 +71,7 @@
Downloads: http://maven.apache.org/download.html
Release Notes: http://maven.apache.org/release-notes.html
Mailing Lists: http://maven.apache.org/mail-lists.html
- Source Code: http://svn.apache.org/repos/asf/maven/
+ Source Code: https://git-wip-us.apache.org/repos/asf/maven.git/apache-maven
Issue Tracking: http://jira.codehaus.org/browse/MNG
- Wiki: http://docs.codehaus.org/display/MAVENUSER/
+ Wiki: https://cwiki.apache.org/confluence/display/MAVEN/
Available Plugins: http://maven.apache.org/plugins/index.html
diff --git a/build.xml b/build.xml
index 2322be3c84..6b93808323 100644
--- a/build.xml
+++ b/build.xml
@@ -36,6 +36,9 @@ END SNIPPET: ant-bootstrap -->
+
+
+
Building ${distributionName} ...
@@ -247,8 +250,9 @@ Do you want to continue?
-
+
+
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
index 1faee29754..a86428b028 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
@@ -88,7 +88,6 @@ public class DefaultArtifactDescriptorReader
implements ArtifactDescriptorReader, Service
{
- @SuppressWarnings( "unused" )
@Requirement
private Logger logger = NullLogger.INSTANCE;
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
index c5b85f709a..87c69fb0d0 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
@@ -19,7 +19,6 @@ package org.apache.maven.repository.internal;
* under the License.
*/
-import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -27,10 +26,8 @@ import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.repository.metadata.Versioning;
-import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.util.IOUtil;
import org.sonatype.aether.RepositoryEvent.EventType;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.RequestTrace;
@@ -69,9 +66,6 @@ public class DefaultVersionRangeResolver
implements VersionRangeResolver, Service
{
- private static final String MAVEN_METADATA_XML = "maven-metadata.xml";
-
- @SuppressWarnings( "unused" )
@Requirement
private Logger logger = NullLogger.INSTANCE;
@@ -190,7 +184,7 @@ public class DefaultVersionRangeResolver
Metadata metadata =
new DefaultMetadata( request.getArtifact().getGroupId(), request.getArtifact().getArtifactId(),
- MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT );
+ MavenMetadata.MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT );
List metadataRequests = new ArrayList( request.getRepositories().size() );
@@ -244,39 +238,25 @@ public class DefaultVersionRangeResolver
{
Versioning versioning = null;
- FileInputStream fis = null;
- try
+ if ( metadata != null )
{
- if ( metadata != null )
+ SyncContext syncContext = syncContextFactory.newInstance( session, true );
+
+ try
{
- SyncContext syncContext = syncContextFactory.newInstance( session, true );
+ syncContext.acquire( null, Collections.singleton( metadata ) );
- try
- {
- syncContext.acquire( null, Collections.singleton( metadata ) );
-
- if ( metadata.getFile() != null && metadata.getFile().exists() )
- {
- fis = new FileInputStream( metadata.getFile() );
- org.apache.maven.artifact.repository.metadata.Metadata m =
- new MetadataXpp3Reader().read( fis, false );
- versioning = m.getVersioning();
- }
- }
- finally
- {
- syncContext.release();
- }
+ versioning = MavenMetadata.read( metadata.getFile() ).getVersioning();
+ }
+ catch ( Exception e )
+ {
+ invalidMetadata( session, trace, metadata, repository, e );
+ result.addException( e );
+ }
+ finally
+ {
+ syncContext.release();
}
- }
- catch ( Exception e )
- {
- invalidMetadata( session, trace, metadata, repository, e );
- result.addException( e );
- }
- finally
- {
- IOUtil.close( fis );
}
return ( versioning != null ) ? versioning : new Versioning();
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
index cdc0252933..cf34483480 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
@@ -20,7 +20,6 @@ package org.apache.maven.repository.internal;
*/
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -31,10 +30,8 @@ import java.util.Map;
import org.apache.maven.artifact.repository.metadata.Snapshot;
import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
import org.apache.maven.artifact.repository.metadata.Versioning;
-import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
import org.sonatype.aether.RepositoryCache;
import org.sonatype.aether.RepositoryEvent.EventType;
@@ -68,22 +65,25 @@ import org.sonatype.aether.util.listener.DefaultRepositoryEvent;
import org.sonatype.aether.util.metadata.DefaultMetadata;
/**
+ * Maven meta-version resolver: supports *-SNAPSHOT
, RELEASE
and LATEST
+ * meta-version resolution from
+ * versioning
+ * element in repositories' maven-metadata.xml
.
+ *
* @author Benjamin Bentmann
+ * @see Versioning
*/
@Component( role = VersionResolver.class )
public class DefaultVersionResolver
implements VersionResolver, Service
{
- private static final String MAVEN_METADATA_XML = "maven-metadata.xml";
-
private static final String RELEASE = "RELEASE";
private static final String LATEST = "LATEST";
private static final String SNAPSHOT = "SNAPSHOT";
- @SuppressWarnings( "unused" )
@Requirement
private Logger logger = NullLogger.INSTANCE;
@@ -143,8 +143,6 @@ public class DefaultVersionResolver
public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
throws VersionResolutionException
{
- RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request );
-
Artifact artifact = request.getArtifact();
String version = artifact.getVersion();
@@ -169,127 +167,81 @@ public class DefaultVersionResolver
}
}
- Metadata metadata;
-
if ( RELEASE.equals( version ) )
{
- metadata =
- new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML,
- Metadata.Nature.RELEASE );
+ Map infos = readVersionInfoMap( session, result, Metadata.Nature.RELEASE, null );
+
+ resolve( result, infos, RELEASE );
}
else if ( LATEST.equals( version ) )
{
- metadata =
- new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML,
- Metadata.Nature.RELEASE_OR_SNAPSHOT );
+ Map infos =
+ readVersionInfoMap( session, result, Metadata.Nature.RELEASE_OR_SNAPSHOT, null );
+
+ if ( !resolve( result, infos, LATEST ) )
+ {
+ resolve( result, infos, RELEASE );
+ }
+
+ if ( result.getVersion() != null && result.getVersion().endsWith( SNAPSHOT ) )
+ {
+ VersionRequest subRequest = new VersionRequest();
+ subRequest.setArtifact( artifact.setVersion( result.getVersion() ) );
+ if ( result.getRepository() instanceof RemoteRepository )
+ {
+ subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) );
+ }
+ else
+ {
+ subRequest.setRepositories( request.getRepositories() );
+ }
+ VersionResult subResult = resolveVersion( session, subRequest );
+ result.setVersion( subResult.getVersion() );
+ result.setRepository( subResult.getRepository() );
+ for ( Exception exception : subResult.getExceptions() )
+ {
+ result.addException( exception );
+ }
+ }
}
else if ( version.endsWith( SNAPSHOT ) )
{
WorkspaceReader workspace = session.getWorkspaceReader();
if ( workspace != null && workspace.findVersions( artifact ).contains( version ) )
{
- metadata = null;
+ result.setVersion( version );
result.setRepository( workspace.getRepository() );
+
+ return result;
}
else
{
- metadata =
- new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, MAVEN_METADATA_XML,
- Metadata.Nature.SNAPSHOT );
- }
- }
- else
- {
- metadata = null;
- }
+ Map infos =
+ readVersionInfoMap( session, result, Metadata.Nature.SNAPSHOT, version );
- if ( metadata == null )
- {
- result.setVersion( version );
- }
- else
- {
- List metadataRequests = new ArrayList( request.getRepositories().size() );
-
- metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) );
-
- for ( RemoteRepository repository : request.getRepositories() )
- {
- MetadataRequest metadataRequest =
- new MetadataRequest( metadata, repository, request.getRequestContext() );
- metadataRequest.setDeleteLocalCopyIfMissing( true );
- metadataRequest.setFavorLocalRepository( true );
- metadataRequest.setTrace( trace );
- metadataRequests.add( metadataRequest );
- }
-
- List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests );
-
- Map infos = new HashMap();
-
- for ( MetadataResult metadataResult : metadataResults )
- {
- result.addException( metadataResult.getException() );
-
- ArtifactRepository repository = metadataResult.getRequest().getRepository();
- if ( repository == null )
- {
- repository = session.getLocalRepository();
- }
-
- Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result );
- merge( artifact, infos, versioning, repository );
- }
-
- if ( RELEASE.equals( version ) )
- {
- resolve( result, infos, RELEASE );
- }
- else if ( LATEST.equals( version ) )
- {
- if ( !resolve( result, infos, LATEST ) )
- {
- resolve( result, infos, RELEASE );
- }
-
- if ( result.getVersion() != null && result.getVersion().endsWith( SNAPSHOT ) )
- {
- VersionRequest subRequest = new VersionRequest();
- subRequest.setArtifact( artifact.setVersion( result.getVersion() ) );
- if ( result.getRepository() instanceof RemoteRepository )
- {
- subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) );
- }
- else
- {
- subRequest.setRepositories( request.getRepositories() );
- }
- VersionResult subResult = resolveVersion( session, subRequest );
- result.setVersion( subResult.getVersion() );
- result.setRepository( subResult.getRepository() );
- for ( Exception exception : subResult.getExceptions() )
- {
- result.addException( exception );
- }
- }
- }
- else
- {
String key = SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() );
+
merge( infos, SNAPSHOT, key );
+
if ( !resolve( result, infos, key ) )
{
result.setVersion( version );
}
}
+ }
+ else
+ {
+ result.setVersion( version );
- if ( StringUtils.isEmpty( result.getVersion() ) )
- {
- throw new VersionResolutionException( result );
- }
+ return result;
}
- if ( cacheKey != null && metadata != null && isSafelyCacheable( session, artifact ) )
+ if ( StringUtils.isEmpty( result.getVersion() ) )
+ {
+ throw new VersionResolutionException( result );
+ }
+
+ if ( cacheKey != null && isSafelyCacheable( session, artifact ) )
{
cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) );
}
@@ -297,6 +249,54 @@ public class DefaultVersionResolver
return result;
}
+ private Map readVersionInfoMap( RepositorySystemSession session, VersionResult result,
+ Metadata.Nature nature, String version )
+ {
+ VersionRequest request = result.getRequest();
+ Artifact artifact = request.getArtifact();
+
+ Metadata metadata =
+ new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version,
+ MavenMetadata.MAVEN_METADATA_XML, nature );
+
+ RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request );
+
+ List metadataRequests = new ArrayList( request.getRepositories().size() + 1 );
+
+ metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) );
+
+ for ( RemoteRepository repository : request.getRepositories() )
+ {
+ MetadataRequest metadataRequest = new MetadataRequest( metadata, repository, request.getRequestContext() );
+ metadataRequest.setDeleteLocalCopyIfMissing( true );
+ metadataRequest.setFavorLocalRepository( true );
+ metadataRequest.setTrace( trace );
+
+ metadataRequests.add( metadataRequest );
+ }
+
+ List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests );
+
+ Map infos = new HashMap();
+
+ for ( MetadataResult metadataResult : metadataResults )
+ {
+ result.addException( metadataResult.getException() );
+
+ ArtifactRepository repository = metadataResult.getRequest().getRepository();
+ if ( repository == null )
+ {
+ repository = session.getLocalRepository();
+ }
+
+ Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result );
+
+ merge( request.getArtifact(), infos, versioning, repository );
+ }
+
+ return infos;
+ }
+
private boolean resolve( VersionResult result, Map infos, String key )
{
VersionInfo info = infos.get( key );
@@ -313,50 +313,41 @@ public class DefaultVersionResolver
{
Versioning versioning = null;
- FileInputStream fis = null;
+
+ if ( metadata == null )
+ {
+ return new Versioning();
+ }
+
+ SyncContext syncContext = syncContextFactory.newInstance( session, true );
+
try
{
- if ( metadata != null )
+ syncContext.acquire( null, Collections.singleton( metadata ) );
+
+ versioning = MavenMetadata.read( metadata.getFile() ).getVersioning();
+
+ /*
+ * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata
+ * of the local repository. This is especially troublesome during snapshot resolution so we try
+ * to handle that gracefully.
+ */
+ if ( versioning != null && repository instanceof LocalRepository )
{
- SyncContext syncContext = syncContextFactory.newInstance( session, true );
-
- try
+ Snapshot snapshot = versioning.getSnapshot();
+ if ( snapshot != null && snapshot.getBuildNumber() > 0 )
{
- syncContext.acquire( null, Collections.singleton( metadata ) );
+ Versioning repaired = new Versioning();
+ repaired.setLastUpdated( versioning.getLastUpdated() );
+ snapshot = new Snapshot();
+ snapshot.setLocalCopy( true );
+ repaired.setSnapshot( snapshot );
- if ( metadata.getFile() != null && metadata.getFile().exists() )
- {
- fis = new FileInputStream( metadata.getFile() );
- org.apache.maven.artifact.repository.metadata.Metadata m =
- new MetadataXpp3Reader().read( fis, false );
- versioning = m.getVersioning();
+ versioning = repaired;
- /*
- * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata
- * of the local repository. This is especially troublesome during snapshot resolution so we try
- * to handle that gracefully.
- */
- if ( versioning != null && repository instanceof LocalRepository )
- {
- if ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 )
- {
- Versioning repaired = new Versioning();
- repaired.setLastUpdated( versioning.getLastUpdated() );
- Snapshot snapshot = new Snapshot();
- snapshot.setLocalCopy( true );
- repaired.setSnapshot( snapshot );
- versioning = repaired;
-
- throw new IOException( "Snapshot information corrupted with remote repository data"
- + ", please verify that no remote repository uses the id '" + repository.getId()
- + "'" );
- }
- }
- }
- }
- finally
- {
- syncContext.release();
+ throw new IOException( "Snapshot information corrupted with remote repository data"
+ + ", please verify that no remote repository uses the id '" + repository.getId()
+ + "'" );
}
}
}
@@ -367,7 +358,7 @@ public class DefaultVersionResolver
}
finally
{
- IOUtil.close( fis );
+ syncContext.release();
}
return ( versioning != null ) ? versioning : new Versioning();
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
index a084977abe..4cea6c1b3b 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
@@ -21,7 +21,6 @@ package org.apache.maven.repository.internal;
import java.io.File;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -35,66 +34,38 @@ import org.sonatype.aether.artifact.Artifact;
* @author Benjamin Bentmann
*/
final class LocalSnapshotMetadata
- extends MavenMetadata
+ extends MavenSnapshotMetadata
{
- private final Collection artifacts = new ArrayList();
-
- private final boolean legacyFormat;
-
public LocalSnapshotMetadata( Artifact artifact, boolean legacyFormat )
{
- super( createMetadata( artifact, legacyFormat ), null );
- this.legacyFormat = legacyFormat;
+ super( createLocalMetadata( artifact, legacyFormat ), null, legacyFormat );
}
public LocalSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat )
{
- super( metadata, file );
- this.legacyFormat = legacyFormat;
+ super( metadata, file, legacyFormat );
}
- private static Metadata createMetadata( Artifact artifact, boolean legacyFormat )
+ private static Metadata createLocalMetadata( Artifact artifact, boolean legacyFormat )
{
+ Metadata metadata = createRepositoryMetadata( artifact, legacyFormat );
+
Snapshot snapshot = new Snapshot();
snapshot.setLocalCopy( true );
Versioning versioning = new Versioning();
versioning.setSnapshot( snapshot );
- Metadata metadata = new Metadata();
metadata.setVersioning( versioning );
- metadata.setGroupId( artifact.getGroupId() );
- metadata.setArtifactId( artifact.getArtifactId() );
- metadata.setVersion( artifact.getBaseVersion() );
-
- if ( !legacyFormat )
- {
- metadata.setModelVersion( "1.1.0" );
- }
return metadata;
}
- public void bind( Artifact artifact )
- {
- artifacts.add( artifact );
- }
-
public MavenMetadata setFile( File file )
{
return new LocalSnapshotMetadata( metadata, file, legacyFormat );
}
- public Object getKey()
- {
- return getGroupId() + ':' + getArtifactId() + ':' + getVersion();
- }
-
- public static Object getKey( Artifact artifact )
- {
- return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion();
- }
-
@Override
protected void merge( Metadata recessive )
{
@@ -135,29 +106,4 @@ final class LocalSnapshotMetadata
artifacts.clear();
}
- private String getKey( String classifier, String extension )
- {
- return classifier + ':' + extension;
- }
-
- public String getGroupId()
- {
- return metadata.getGroupId();
- }
-
- public String getArtifactId()
- {
- return metadata.getArtifactId();
- }
-
- public String getVersion()
- {
- return metadata.getVersion();
- }
-
- public Nature getNature()
- {
- return Nature.SNAPSHOT;
- }
-
}
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
index 3db90e94fd..78be415fc7 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
@@ -41,6 +41,8 @@ abstract class MavenMetadata
implements MergeableMetadata
{
+ static final String MAVEN_METADATA_XML = "maven-metadata.xml";
+
private final File file;
protected Metadata metadata;
@@ -55,7 +57,7 @@ abstract class MavenMetadata
public String getType()
{
- return "maven-metadata.xml";
+ return MAVEN_METADATA_XML;
}
public File getFile()
@@ -82,7 +84,7 @@ abstract class MavenMetadata
protected abstract void merge( Metadata recessive );
- private Metadata read( File metadataFile )
+ static Metadata read( File metadataFile )
throws RepositoryException
{
if ( metadataFile.length() <= 0 )
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java
new file mode 100644
index 0000000000..0f88cdc1d4
--- /dev/null
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java
@@ -0,0 +1,100 @@
+package org.apache.maven.repository.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.sonatype.aether.artifact.Artifact;
+
+/**
+ * @author Hervé Boutemy
+ */
+abstract class MavenSnapshotMetadata
+ extends MavenMetadata
+{
+ static final String SNAPSHOT = "SNAPSHOT";
+
+ protected final Collection artifacts = new ArrayList();
+
+ protected final boolean legacyFormat;
+
+ protected MavenSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat )
+ {
+ super( metadata, file );
+ this.legacyFormat = legacyFormat;
+ }
+
+ protected static Metadata createRepositoryMetadata( Artifact artifact, boolean legacyFormat )
+ {
+ Metadata metadata = new Metadata();
+ if ( !legacyFormat )
+ {
+ metadata.setModelVersion( "1.1.0" );
+ }
+ metadata.setGroupId( artifact.getGroupId() );
+ metadata.setArtifactId( artifact.getArtifactId() );
+ metadata.setVersion( artifact.getBaseVersion() );
+
+ return metadata;
+ }
+
+ public void bind( Artifact artifact )
+ {
+ artifacts.add( artifact );
+ }
+
+ public Object getKey()
+ {
+ return getGroupId() + ':' + getArtifactId() + ':' + getVersion();
+ }
+
+ public static Object getKey( Artifact artifact )
+ {
+ return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion();
+ }
+
+ protected String getKey( String classifier, String extension )
+ {
+ return classifier + ':' + extension;
+ }
+
+ public String getGroupId()
+ {
+ return metadata.getGroupId();
+ }
+
+ public String getArtifactId()
+ {
+ return metadata.getArtifactId();
+ }
+
+ public String getVersion()
+ {
+ return metadata.getVersion();
+ }
+
+ public Nature getNature()
+ {
+ return Nature.SNAPSHOT;
+ }
+}
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
index 4ce43938ac..246c786e0b 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
@@ -23,7 +23,6 @@ import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -39,46 +38,19 @@ import org.sonatype.aether.artifact.Artifact;
* @author Benjamin Bentmann
*/
final class RemoteSnapshotMetadata
- extends MavenMetadata
+ extends MavenSnapshotMetadata
{
- private static final String SNAPSHOT = "SNAPSHOT";
-
- private final Collection artifacts = new ArrayList();
-
private final Map versions = new LinkedHashMap();
- private final boolean legacyFormat;
-
public RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat )
{
- super( createMetadata( artifact, legacyFormat ), null );
- this.legacyFormat = legacyFormat;
+ super( createRepositoryMetadata( artifact, legacyFormat ), null, legacyFormat );
}
private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat )
{
- super( metadata, file );
- this.legacyFormat = legacyFormat;
- }
-
- private static Metadata createMetadata( Artifact artifact, boolean legacyFormat )
- {
- Metadata metadata = new Metadata();
- if ( !legacyFormat )
- {
- metadata.setModelVersion( "1.1.0" );
- }
- metadata.setGroupId( artifact.getGroupId() );
- metadata.setArtifactId( artifact.getArtifactId() );
- metadata.setVersion( artifact.getBaseVersion() );
-
- return metadata;
- }
-
- public void bind( Artifact artifact )
- {
- artifacts.add( artifact );
+ super( metadata, file, legacyFormat );
}
public MavenMetadata setFile( File file )
@@ -86,16 +58,6 @@ final class RemoteSnapshotMetadata
return new RemoteSnapshotMetadata( metadata, file, legacyFormat );
}
- public Object getKey()
- {
- return getGroupId() + ':' + getArtifactId() + ':' + getVersion();
- }
-
- public static Object getKey( Artifact artifact )
- {
- return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion();
- }
-
public String getExpandedVersion( Artifact artifact )
{
String key = getKey( artifact.getClassifier(), artifact.getExtension() );
@@ -136,7 +98,7 @@ final class RemoteSnapshotMetadata
if ( version.endsWith( SNAPSHOT ) )
{
- String qualifier = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber();
+ String qualifier = snapshot.getTimestamp() + '-' + snapshot.getBuildNumber();
version = version.substring( 0, version.length() - SNAPSHOT.length() ) + qualifier;
}
@@ -145,6 +107,7 @@ final class RemoteSnapshotMetadata
sv.setExtension( artifact.getExtension() );
sv.setVersion( version );
sv.setUpdated( lastUpdated );
+
versions.put( getKey( sv.getClassifier(), sv.getExtension() ), sv );
}
@@ -169,11 +132,6 @@ final class RemoteSnapshotMetadata
}
}
- private String getKey( String classifier, String extension )
- {
- return classifier + ':' + extension;
- }
-
private static int getBuildNumber( Metadata metadata )
{
int number = 0;
@@ -191,24 +149,4 @@ final class RemoteSnapshotMetadata
return number;
}
- public String getGroupId()
- {
- return metadata.getGroupId();
- }
-
- public String getArtifactId()
- {
- return metadata.getArtifactId();
- }
-
- public String getVersion()
- {
- return metadata.getVersion();
- }
-
- public Nature getNature()
- {
- return Nature.SNAPSHOT;
- }
-
}
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
index 139e5f8c9c..2fefe02e1d 100644
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
@@ -40,18 +40,22 @@ final class VersionsMetadata
public VersionsMetadata( Artifact artifact )
{
- super( createMetadata( artifact ), null );
+ super( createRepositoryMetadata( artifact ), null );
this.artifact = artifact;
}
public VersionsMetadata( Artifact artifact, File file )
{
- super( createMetadata( artifact ), file );
+ super( createRepositoryMetadata( artifact ), file );
this.artifact = artifact;
}
- private static Metadata createMetadata( Artifact artifact )
+ private static Metadata createRepositoryMetadata( Artifact artifact )
{
+ Metadata metadata = new Metadata();
+ metadata.setGroupId( artifact.getGroupId() );
+ metadata.setArtifactId( artifact.getArtifactId() );
+
Versioning versioning = new Versioning();
versioning.addVersion( artifact.getBaseVersion() );
if ( !artifact.isSnapshot() )
@@ -63,10 +67,7 @@ final class VersionsMetadata
versioning.setLatest( artifact.getBaseVersion() );
}
- Metadata metadata = new Metadata();
metadata.setVersioning( versioning );
- metadata.setGroupId( artifact.getGroupId() );
- metadata.setArtifactId( artifact.getArtifactId() );
return metadata;
}
diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java
index 2ad80f8147..3b2f379fba 100644
--- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java
+++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java
@@ -1,76 +1,76 @@
-package org.apache.maven.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.net.MalformedURLException;
-
-import org.apache.maven.repository.internal.util.ConsoleRepositoryListener;
-import org.apache.maven.repository.internal.util.ConsoleTransferListener;
-import org.codehaus.plexus.PlexusTestCase;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.repository.LocalRepository;
-import org.sonatype.aether.repository.RemoteRepository;
-
-public abstract class AbstractRepositoryTestCase
- extends PlexusTestCase
-{
- protected RepositorySystem system;
-
- protected RepositorySystemSession session;
-
- @Override
- protected void setUp()
- throws Exception
- {
- super.setUp();
- system = lookup( RepositorySystem.class );
- session = newMavenRepositorySystemSession( system );
- }
-
- @Override
- protected void tearDown()
- throws Exception
- {
- session = null;
- system = null;
- super.tearDown();
- }
-
- public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system )
- {
- MavenRepositorySystemSession session = new MavenRepositorySystemSession( true );
-
- LocalRepository localRepo = new LocalRepository( "target/local-repo" );
- session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) );
-
- session.setTransferListener( new ConsoleTransferListener() );
- session.setRepositoryListener( new ConsoleRepositoryListener() );
-
- return session;
- }
-
- public static RemoteRepository newTestRepository()
- throws MalformedURLException
- {
- return new RemoteRepository( "repo", "default",
- getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() );
- }
-}
+package org.apache.maven.repository.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.net.MalformedURLException;
+
+import org.apache.maven.repository.internal.util.ConsoleRepositoryListener;
+import org.apache.maven.repository.internal.util.ConsoleTransferListener;
+import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.repository.RemoteRepository;
+
+public abstract class AbstractRepositoryTestCase
+ extends PlexusTestCase
+{
+ protected RepositorySystem system;
+
+ protected RepositorySystemSession session;
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ system = lookup( RepositorySystem.class );
+ session = newMavenRepositorySystemSession( system );
+ }
+
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ session = null;
+ system = null;
+ super.tearDown();
+ }
+
+ public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system )
+ {
+ MavenRepositorySystemSession session = new MavenRepositorySystemSession( true );
+
+ LocalRepository localRepo = new LocalRepository( "target/local-repo" );
+ session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) );
+
+ session.setTransferListener( new ConsoleTransferListener() );
+ session.setRepositoryListener( new ConsoleRepositoryListener() );
+
+ return session;
+ }
+
+ public static RemoteRepository newTestRepository()
+ throws MalformedURLException
+ {
+ return new RemoteRepository( "repo", "default",
+ getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() );
+ }
+}
diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java
index 39eaaf6473..1feaef808b 100644
--- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java
+++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java
@@ -1,96 +1,96 @@
-package org.apache.maven.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.impl.VersionResolver;
-import org.sonatype.aether.resolution.VersionRequest;
-import org.sonatype.aether.resolution.VersionResult;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-
-public class DefaultVersionResolverTest
- extends AbstractRepositoryTestCase
-{
- private DefaultVersionResolver versionResolver;
-
- @Override
- protected void setUp()
- throws Exception
- {
- super.setUp();
- // be sure we're testing the right class, i.e. DefaultVersionResolver.class
- versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" );
- }
-
- @Override
- protected void tearDown()
- throws Exception
- {
- versionResolver = null;
- super.tearDown();
- }
-
- public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts()
- throws Exception
- {
- VersionRequest requestB = new VersionRequest();
- requestB.addRepository( newTestRepository() );
- Artifact artifactB =
- new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" );
- requestB.setArtifact( artifactB );
-
- VersionResult resultB = versionResolver.resolveVersion( session, requestB );
- assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() );
-
- VersionRequest requestA = new VersionRequest();
- requestA.addRepository( newTestRepository() );
-
- Artifact artifactA =
- new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" );
- requestA.setArtifact( artifactA );
-
- VersionResult resultA = versionResolver.resolveVersion( session, requestA );
- assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() );
- }
-
- public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts()
- throws Exception
- {
- VersionRequest requestA = new VersionRequest();
- requestA.addRepository( newTestRepository() );
- String versionA = "07.20.3-20120809.112124-88";
- Artifact artifactA =
- new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA );
- requestA.setArtifact( artifactA );
-
- VersionResult resultA = versionResolver.resolveVersion( session, requestA );
- assertEquals( versionA, resultA.getVersion() );
-
- VersionRequest requestB = new VersionRequest();
- requestB.addRepository( newTestRepository() );
- String versionB = "07.20.3-20120809.112920-97";
- Artifact artifactB =
- new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB );
- requestB.setArtifact( artifactB );
-
- VersionResult resultB = versionResolver.resolveVersion( session, requestB );
- assertEquals( versionB, resultB.getVersion() );
- }
-}
+package org.apache.maven.repository.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.impl.VersionResolver;
+import org.sonatype.aether.resolution.VersionRequest;
+import org.sonatype.aether.resolution.VersionResult;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
+
+public class DefaultVersionResolverTest
+ extends AbstractRepositoryTestCase
+{
+ private DefaultVersionResolver versionResolver;
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ // be sure we're testing the right class, i.e. DefaultVersionResolver.class
+ versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" );
+ }
+
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ versionResolver = null;
+ super.tearDown();
+ }
+
+ public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts()
+ throws Exception
+ {
+ VersionRequest requestB = new VersionRequest();
+ requestB.addRepository( newTestRepository() );
+ Artifact artifactB =
+ new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" );
+ requestB.setArtifact( artifactB );
+
+ VersionResult resultB = versionResolver.resolveVersion( session, requestB );
+ assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() );
+
+ VersionRequest requestA = new VersionRequest();
+ requestA.addRepository( newTestRepository() );
+
+ Artifact artifactA =
+ new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" );
+ requestA.setArtifact( artifactA );
+
+ VersionResult resultA = versionResolver.resolveVersion( session, requestA );
+ assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() );
+ }
+
+ public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts()
+ throws Exception
+ {
+ VersionRequest requestA = new VersionRequest();
+ requestA.addRepository( newTestRepository() );
+ String versionA = "07.20.3-20120809.112124-88";
+ Artifact artifactA =
+ new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA );
+ requestA.setArtifact( artifactA );
+
+ VersionResult resultA = versionResolver.resolveVersion( session, requestA );
+ assertEquals( versionA, resultA.getVersion() );
+
+ VersionRequest requestB = new VersionRequest();
+ requestB.addRepository( newTestRepository() );
+ String versionB = "07.20.3-20120809.112920-97";
+ Artifact artifactB =
+ new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB );
+ requestB.setArtifact( artifactB );
+
+ VersionResult resultB = versionResolver.resolveVersion( session, requestB );
+ assertEquals( versionB, resultB.getVersion() );
+ }
+}
diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml
index db26c6eb30..9f0a7fedd6 100644
--- a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml
+++ b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml
@@ -1,49 +1,49 @@
-
-
-
-
-
- org.apache.maven.its
- dep-mng5324
- 07.20.3-SNAPSHOT
-
-
- 20120809.112920
- 97
-
- 20120809112920
-
-
- classifierA
- jar
- 07.20.3-20120809.112124-88
- 20120809112124
-
-
- classifierB
- jar
- 07.20.3-20120809.112920-97
- 20120809112920
-
-
-
+
+
+
+
+
+ org.apache.maven.its
+ dep-mng5324
+ 07.20.3-SNAPSHOT
+
+
+ 20120809.112920
+ 97
+
+ 20120809112920
+
+
+ classifierA
+ jar
+ 07.20.3-20120809.112124-88
+ 20120809112124
+
+
+ classifierB
+ jar
+ 07.20.3-20120809.112920-97
+ 20120809112920
+
+
+
\ No newline at end of file
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
index 338c612d05..b26ad9f42b 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
@@ -32,6 +32,10 @@ import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.artifact.versioning.VersionRange;
+/**
+ * Maven Artifact interface. Notice that it mixes artifact definition concepts (groupId, artifactId, version)
+ * with dependency information (version range, scope).
+ */
public interface Artifact
extends Comparable
{
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
index 306c90b965..f76e2c1377 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
@@ -21,7 +21,6 @@ package org.apache.maven.artifact.repository;
import java.util.Calendar;
import java.util.Date;
-import java.util.TimeZone;
/**
* Describes a set of policies for a repository to use under certain conditions.
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
index da654c8492..6f066140dc 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
@@ -69,9 +69,9 @@ public class ComparableVersion
private interface Item
{
- final int INTEGER_ITEM = 0;
- final int STRING_ITEM = 1;
- final int LIST_ITEM = 2;
+ int INTEGER_ITEM = 0;
+ int STRING_ITEM = 1;
+ int LIST_ITEM = 2;
int compareTo( Item item );
@@ -86,7 +86,7 @@ public class ComparableVersion
private static class IntegerItem
implements Item
{
- private static final BigInteger BigInteger_ZERO = new BigInteger( "0" );
+ private static final BigInteger BIG_INTEGER_ZERO = new BigInteger( "0" );
private final BigInteger value;
@@ -94,7 +94,7 @@ public class ComparableVersion
private IntegerItem()
{
- this.value = BigInteger_ZERO;
+ this.value = BIG_INTEGER_ZERO;
}
public IntegerItem( String str )
@@ -109,14 +109,14 @@ public class ComparableVersion
public boolean isNull()
{
- return BigInteger_ZERO.equals( value );
+ return BIG_INTEGER_ZERO.equals( value );
}
public int compareTo( Item item )
{
if ( item == null )
{
- return BigInteger_ZERO.equals( value ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
+ return BIG_INTEGER_ZERO.equals( value ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
}
switch ( item.getType() )
@@ -266,7 +266,7 @@ public class ComparableVersion
void normalize()
{
- for( ListIterator- iterator = listIterator( size() ); iterator.hasPrevious(); )
+ for ( ListIterator
- iterator = listIterator( size() ); iterator.hasPrevious(); )
{
Item item = iterator.previous();
if ( item.isNull() )
@@ -327,7 +327,7 @@ public class ComparableVersion
public String toString()
{
StringBuilder buffer = new StringBuilder( "(" );
- for( Iterator
- iter = iterator(); iter.hasNext(); )
+ for ( Iterator
- iter = iterator(); iter.hasNext(); )
{
buffer.append( iter.next() );
if ( iter.hasNext() )
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
index b588340937..db71dc700c 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
@@ -72,7 +72,7 @@ public class DefaultArtifactVersion
{
if ( otherVersion instanceof DefaultArtifactVersion )
{
- return this.comparable.compareTo( ( (DefaultArtifactVersion) otherVersion).comparable );
+ return this.comparable.compareTo( ( (DefaultArtifactVersion) otherVersion ).comparable );
}
else
{
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactScopeEnum.java b/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactScopeEnum.java
index 574f7d6d55..c6d02c6fde 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactScopeEnum.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactScopeEnum.java
@@ -108,7 +108,7 @@ public enum ArtifactScopeEnum
{
final ArtifactScopeEnum s = checkScope( scope );
- // system scope is historic only - and simple
+ // system scope is historic only - and simple
if ( id == system.id )
{
return scope.id == system.id;
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
index 0f1030b2e6..cbdcf07bee 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
@@ -1,18 +1,22 @@
package org.apache.maven.artifact.repository.metadata;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import java.io.File;
@@ -47,7 +51,7 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
/**
* @author Jason van Zyl
*/
-@Component(role=RepositoryMetadataManager.class)
+@Component( role = RepositoryMetadataManager.class )
public class DefaultRepositoryMetadataManager
extends AbstractLogEnabled
implements RepositoryMetadataManager
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
index a1fb1e8426..8024d310b1 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
@@ -24,7 +24,6 @@ import java.io.File;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.codehaus.plexus.util.FileUtils;
import org.sonatype.aether.RepositoryException;
import org.sonatype.aether.metadata.MergeableMetadata;
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
index 9c8364d461..5833d06759 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
@@ -1,18 +1,22 @@
package org.apache.maven.artifact.resolver;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import java.io.File;
@@ -65,7 +69,7 @@ import org.sonatype.aether.resolution.ArtifactResult;
/**
* @author Jason van Zyl
*/
-@Component(role = ArtifactResolver.class)
+@Component( role = ArtifactResolver.class )
public class DefaultArtifactResolver
implements ArtifactResolver
{
@@ -111,7 +115,8 @@ public class DefaultArtifactResolver
else
{
executor =
- new ThreadPoolExecutor( threads, threads, 3, TimeUnit.SECONDS, new LinkedBlockingQueue
(), new DaemonThreadCreator());
+ new ThreadPoolExecutor( 0, threads, 3, TimeUnit.SECONDS, new LinkedBlockingQueue(),
+ new DaemonThreadCreator() );
}
}
@@ -151,19 +156,22 @@ public class DefaultArtifactResolver
}
}
- public void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository, TransferListener resolutionListener )
+ public void resolve( Artifact artifact, List remoteRepositories,
+ ArtifactRepository localRepository, TransferListener resolutionListener )
throws ArtifactResolutionException, ArtifactNotFoundException
{
resolve( artifact, remoteRepositories, getSession( localRepository ) );
}
- public void resolveAlways( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
+ public void resolveAlways( Artifact artifact, List remoteRepositories,
+ ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException
{
resolve( artifact, remoteRepositories, getSession( localRepository ) );
}
- private void resolve( Artifact artifact, List remoteRepositories, RepositorySystemSession session )
+ private void resolve( Artifact artifact, List remoteRepositories,
+ RepositorySystemSession session )
throws ArtifactResolutionException, ArtifactNotFoundException
{
if ( artifact == null )
@@ -249,52 +257,73 @@ public class DefaultArtifactResolver
}
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, ArtifactRepository localRepository, List remoteRepositories,
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ ArtifactRepository localRepository,
+ List remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository, remoteRepositories, source, filter );
+ return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
+ remoteRepositories, source, filter );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
- List remoteRepositories, ArtifactMetadataSource source )
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ Map managedVersions, ArtifactRepository localRepository,
+ List remoteRepositories,
+ ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, null );
+ return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
+ remoteRepositories, source, null );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
- List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter )
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ Map managedVersions, ArtifactRepository localRepository,
+ List remoteRepositories,
+ ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, null );
+ return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
+ remoteRepositories, source, filter, null );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, List remoteRepositories, ArtifactRepository localRepository,
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ List remoteRepositories,
+ ArtifactRepository localRepository,
ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException
{
return resolveTransitively( artifacts, originatingArtifact, localRepository, remoteRepositories, source, null );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, List remoteRepositories, ArtifactRepository localRepository,
- ArtifactMetadataSource source, List listeners )
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ List remoteRepositories,
+ ArtifactRepository localRepository,
+ ArtifactMetadataSource source,
+ List listeners )
throws ArtifactResolutionException, ArtifactNotFoundException
{
return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
remoteRepositories, source, null, listeners );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
- List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List listeners )
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ Map managedVersions, ArtifactRepository localRepository,
+ List remoteRepositories,
+ ArtifactMetadataSource source, ArtifactFilter filter,
+ List listeners )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, listeners, null );
+ return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
+ remoteRepositories, source, filter, listeners, null );
}
- public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
- List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List listeners,
+ public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,
+ Map managedVersions, ArtifactRepository localRepository,
+ List remoteRepositories,
+ ArtifactMetadataSource source, ArtifactFilter filter,
+ List listeners,
List conflictResolvers )
throws ArtifactResolutionException, ArtifactNotFoundException
{
@@ -336,7 +365,7 @@ public class DefaultArtifactResolver
{
Artifact rootArtifact = request.getArtifact();
Set artifacts = request.getArtifactDependencies();
- Map managedVersions = request.getManagedVersionMap();
+ Map managedVersions = request.getManagedVersionMap();
List listeners = request.getListeners();
ArtifactFilter collectionFilter = request.getCollectionFilter();
ArtifactFilter resolutionFilter = request.getResolutionFilter();
@@ -528,18 +557,18 @@ public class DefaultArtifactResolver
/**
* ThreadCreator for creating daemon threads with fixed ThreadGroup-name.
*/
- final static class DaemonThreadCreator
+ static final class DaemonThreadCreator
implements ThreadFactory
{
static final String THREADGROUP_NAME = "org.apache.maven.artifact.resolver.DefaultArtifactResolver";
- final static ThreadGroup group = new ThreadGroup( THREADGROUP_NAME );
+ static final ThreadGroup GROUP = new ThreadGroup( THREADGROUP_NAME );
- final static AtomicInteger threadNumber = new AtomicInteger( 1 );
+ static final AtomicInteger THREAD_NUMBER = new AtomicInteger( 1 );
public Thread newThread( Runnable r )
{
- Thread newThread = new Thread( group, r, "resolver-" + threadNumber.getAndIncrement() );
+ Thread newThread = new Thread( GROUP, r, "resolver-" + THREAD_NUMBER.getAndIncrement() );
newThread.setDaemon( true );
return newThread;
}
@@ -574,6 +603,7 @@ public class DefaultArtifactResolver
public void run()
{
+ ClassLoader old = Thread.currentThread().getContextClassLoader();
try
{
Thread.currentThread().setContextClassLoader( classLoader );
@@ -602,6 +632,8 @@ public class DefaultArtifactResolver
finally
{
latch.countDown();
+ Thread.currentThread().setContextClassLoader( old );
+
}
}
diff --git a/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java b/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
index ae3d2c51c1..740c2cd93a 100644
--- a/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
+++ b/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
@@ -20,13 +20,10 @@ package org.apache.maven.profiles;
*/
import org.apache.maven.model.Activation;
-import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProblemCollector;
-import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.profile.DefaultProfileActivationContext;
-import org.apache.maven.model.profile.ProfileActivationContext;
import org.apache.maven.model.profile.ProfileSelector;
import org.apache.maven.profiles.activation.ProfileActivationException;
import org.codehaus.plexus.MutablePlexusContainer;
@@ -36,13 +33,11 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
import org.codehaus.plexus.logging.Logger;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.maven.model.building.ModelProblem.Version;
import org.apache.maven.model.building.ModelProblemCollectorRequest;
@Deprecated
diff --git a/maven-compat/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java b/maven-compat/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java
index 4186415418..a03267dc2d 100644
--- a/maven-compat/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java
+++ b/maven-compat/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java
@@ -63,7 +63,7 @@ public class SystemPropertyProfileActivator
+ profile.getId() + "'" );
}
- if ( name.startsWith("!") )
+ if ( name.startsWith( "!" ) )
{
reverseName = true;
name = name.substring( 1 );
diff --git a/maven-compat/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java b/maven-compat/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java
index aff88e0a03..f4a1b5c41a 100644
--- a/maven-compat/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java
+++ b/maven-compat/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java
@@ -283,7 +283,7 @@ public abstract class AbstractStringBasedModelInterpolator
pathTranslator ) );
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings( "unchecked" )
protected String interpolateInternal( String src, List valueSources,
List postProcessors, boolean debug )
throws ModelInterpolationException
@@ -296,7 +296,7 @@ public abstract class AbstractStringBasedModelInterpolator
Logger logger = getLogger();
String result = src;
- synchronized( this )
+ synchronized ( this )
{
for ( ValueSource vs : valueSources )
@@ -315,7 +315,7 @@ public abstract class AbstractStringBasedModelInterpolator
{
result = interpolator.interpolate( result, recursionInterceptor );
}
- catch( InterpolationException e )
+ catch ( InterpolationException e )
{
throw new ModelInterpolationException( e.getMessage(), e );
}
diff --git a/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java b/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
index a6782d69f0..0095f80382 100644
--- a/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
+++ b/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
@@ -19,15 +19,11 @@ package org.apache.maven.project.validation;
* under the License.
*/
-import java.util.List;
-import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProblemCollector;
-import org.apache.maven.model.building.ModelProblem.Severity;
-import org.apache.maven.model.building.ModelProblem.Version;
import org.apache.maven.model.building.ModelProblemCollectorRequest;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/MetadataGraphNode.java b/maven-compat/src/main/java/org/apache/maven/repository/MetadataGraphNode.java
index 3940cf336d..22394e7078 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/MetadataGraphNode.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/MetadataGraphNode.java
@@ -41,8 +41,8 @@ public class MetadataGraphNode
public MetadataGraphNode()
{
- inNodes = new ArrayList(4);
- exNodes = new ArrayList(8);
+ inNodes = new ArrayList( 4 );
+ exNodes = new ArrayList( 8 );
}
public MetadataGraphNode( MavenArtifactMetadata metadata )
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/repository/DefaultArtifactRepositoryFactory.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/repository/DefaultArtifactRepositoryFactory.java
index 85a6bc45da..4bc911673d 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/repository/DefaultArtifactRepositoryFactory.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/repository/DefaultArtifactRepositoryFactory.java
@@ -43,7 +43,7 @@ public class DefaultArtifactRepositoryFactory
private String globalChecksumPolicy;
@Requirement( role = ArtifactRepositoryLayout.class )
- private Map repositoryLayouts;
+ private Map repositoryLayouts;
public ArtifactRepositoryLayout getLayout( String layoutId )
throws UnknownRepositoryLayoutException
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
index 651d46e8ce..d69e8125f8 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
@@ -63,10 +63,10 @@ import org.codehaus.plexus.logging.Logger;
public class DefaultLegacyArtifactCollector
implements LegacyArtifactCollector
{
- @Requirement(hint="nearest")
+ @Requirement( hint = "nearest" )
private ConflictResolver defaultConflictResolver;
- @Requirement
+ @Requirement
private Logger logger;
@Requirement
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformation.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformation.java
index 1a5606f2fa..42604d7549 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformation.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformation.java
@@ -38,18 +38,17 @@ public interface ArtifactTransformation
/**
* Take in a artifact and return the transformed artifact for locating in the remote repository. If no
- * transformation has occured the original artifact is returned.
+ * transformation has occurred the original artifact is returned.
*
* @param artifact Artifact to be transformed.
* @param request the repositories to check
- * @param localRepository the local repository
*/
void transformForResolve( Artifact artifact, RepositoryRequest request )
throws ArtifactResolutionException, ArtifactNotFoundException;
/**
* Take in a artifact and return the transformed artifact for locating in the remote repository. If no
- * transformation has occured the original artifact is returned.
+ * transformation has occurred the original artifact is returned.
*
* @param artifact Artifact to be transformed.
* @param remoteRepositories the repositories to check
@@ -62,7 +61,7 @@ public interface ArtifactTransformation
/**
* Take in a artifact and return the transformed artifact for locating in the local repository. If no
- * transformation has occured the original artifact is returned.
+ * transformation has occurred the original artifact is returned.
*
* @param artifact Artifact to be transformed.
* @param localRepository the local repository it will be stored in
@@ -72,8 +71,8 @@ public interface ArtifactTransformation
throws ArtifactInstallationException;
/**
- * Take in a artifact and return the transformed artifact for distributing toa remote repository. If no
- * transformation has occured the original artifact is returned.
+ * Take in a artifact and return the transformed artifact for distributing to remote repository. If no
+ * transformation has occurred the original artifact is returned.
*
* @param artifact Artifact to be transformed.
* @param remoteRepository the repository to deploy to
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformationManager.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformationManager.java
index 9137261532..f0ac9c89c8 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformationManager.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ArtifactTransformationManager.java
@@ -40,7 +40,6 @@ public interface ArtifactTransformationManager
*
* @param artifact Artifact to be transformed.
* @param request the repositories to check
- * @param localRepository the local repository
*/
void transformForResolve( Artifact artifact, RepositoryRequest request )
throws ArtifactResolutionException, ArtifactNotFoundException;
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/ArtifactMetadata.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/ArtifactMetadata.java
index 00749470d5..2666eafb62 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/ArtifactMetadata.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/ArtifactMetadata.java
@@ -28,7 +28,6 @@ import org.apache.maven.artifact.ArtifactScopeEnum;
* Artifact Metadata that is resolved independent of Artifact itself.
*
* @author Oleg Gusakov
- *
*/
public class ArtifactMetadata
{
@@ -291,7 +290,7 @@ public class ArtifactMetadata
return artifactExists;
}
- public void setArtifactExists(boolean artifactExists)
+ public void setArtifactExists( boolean artifactExists )
{
this.artifactExists = artifactExists;
}
@@ -302,7 +301,7 @@ public class ArtifactMetadata
return dependencies;
}
- public void setDependencies(Collection dependencies)
+ public void setDependencies( Collection dependencies )
{
this.dependencies = dependencies;
}
@@ -312,7 +311,7 @@ public class ArtifactMetadata
return artifactUri;
}
- public void setArtifactUri(String artifactUri)
+ public void setArtifactUri( String artifactUri )
{
this.artifactUri = artifactUri;
}
@@ -322,23 +321,28 @@ public class ArtifactMetadata
{
return why;
}
- public void setWhy(String why)
+
+ public void setWhy( String why )
{
this.why = why;
}
+
//-------------------------------------------------------------------
public String getError()
{
return error;
}
- public void setError(String error)
+
+ public void setError( String error )
{
this.error = error;
}
+
public boolean isError()
{
return error == null;
}
+
//------------------------------------------------------------------
public String getDependencyConflictId()
{
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java
index d898739275..b116c69f06 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java
@@ -294,7 +294,7 @@ public class MetadataGraph
//------------------------------------------------------------------------
public List getEdgesBetween( MetadataGraphVertex vFrom, MetadataGraphVertex vTo )
{
- List edges = getIncidentEdges(vTo);
+ List edges = getIncidentEdges( vTo );
if ( edges == null || edges.isEmpty() )
{
return null;
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphEdge.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphEdge.java
index 4a50b207b7..9d86933ab2 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphEdge.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphEdge.java
@@ -125,10 +125,10 @@ public class MetadataGraphEdge
this.depth = depth;
}
- public boolean isResolved()
- {
- return resolved;
- }
+ public boolean isResolved()
+ {
+ return resolved;
+ }
public void setResolved( boolean resolved )
{
@@ -175,7 +175,7 @@ public class MetadataGraphEdge
this.target = target;
}
- @Override
+ @Override
public String toString()
{
return "[ " + "FROM:("
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolution.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolution.java
index 770ae79d2f..9a9130b2fa 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolution.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolution.java
@@ -62,7 +62,7 @@ public class MetadataResolution
return artifactMetadata;
}
- public void setArtifactMetadata(ArtifactMetadata artifactMetadata)
+ public void setArtifactMetadata( ArtifactMetadata artifactMetadata )
{
this.artifactMetadata = artifactMetadata;
}
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index 41e2079298..dcc269947b 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -124,73 +124,62 @@
+
+ org.codehaus.mojo
+ buildnumber-maven-plugin
+
+
+ create-noncanonicalrev
+
+ create-timestamp
+
+
+ 'NON-CANONICAL_'yyyy-MM-dd_HH-mm_'${user.name}'
+ nonCanonicalRevision
+
+
+
+ create-buildnumber
+
+ create
+
+
+ false
+ false
+ ${nonCanonicalRevision}
+
+
+
+
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.codehaus.mojo
+ buildnumber-maven-plugin
+ [1.2,)
+
+ create-timestamp
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- svn-buildnumber
-
-
- .svn
-
-
-
-
-
- org.codehaus.mojo
- buildnumber-maven-plugin
-
-
- generate-resources
-
- create
-
-
-
-
- false
- false
-
- javasvn
-
-
-
-
-
-
-
- non-canonical-buildnumber
-
-
- .svn
-
-
-
-
-
- org.codehaus.mojo
- buildnumber-maven-plugin
-
-
- generate-resources
-
- create
-
-
-
-
- false
- false
- NON-CANONICAL_{0,date,yyyy-MM-dd_HH-mm}_{1}
-
- - timestamp
- - ${user.name}
-
-
-
-
-
-
-
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index e80185bbda..98dc5c1805 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -85,8 +85,10 @@ import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.repository.Authentication;
import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.repository.NoLocalRepositoryManagerException;
import org.sonatype.aether.repository.RepositoryPolicy;
import org.sonatype.aether.repository.WorkspaceReader;
+import org.sonatype.aether.spi.localrepo.LocalRepositoryManagerFactory;
import org.sonatype.aether.util.DefaultRepositorySystemSession;
import org.sonatype.aether.util.repository.ChainedWorkspaceReader;
import org.sonatype.aether.util.repository.DefaultAuthenticationSelector;
@@ -128,6 +130,9 @@ public class DefaultMaven
@Requirement
private RepositorySystem repoSystem;
+ @Requirement( optional = true, hint = "simple" )
+ private LocalRepositoryManagerFactory simpleLocalRepositoryManagerFactory;
+
@Requirement
private SettingsDecrypter settingsDecrypter;
@@ -352,7 +357,25 @@ public class DefaultMaven
session.setArtifactTypeRegistry( RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ) );
LocalRepository localRepo = new LocalRepository( request.getLocalRepository().getBasedir() );
- session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+
+ if ( request.isUseLegacyLocalRepository() )
+ {
+ logger.warn( "Disabling enhanced local repository: using legacy is stronlgy discouraged to ensure build reproducibility." );
+ try
+ {
+ session.setLocalRepositoryManager( simpleLocalRepositoryManagerFactory.newInstance( localRepo ) );
+ }
+ catch ( NoLocalRepositoryManagerException e )
+ {
+
+ logger.warn( "Failed to configure legacy local repository: back to default" );
+ session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+ }
+ }
+ else
+ {
+ session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+ }
if ( request.getWorkspaceReader() != null )
{
diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
index 78436be6b5..bea605947e 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
@@ -143,6 +143,8 @@ public class DefaultMavenExecutionRequest
*/
private boolean noSnapshotUpdates;
+ private boolean useSimpleLocalRepositoryManager = false;
+
public DefaultMavenExecutionRequest()
{
}
@@ -1076,4 +1078,14 @@ public class DefaultMavenExecutionRequest
return this;
}
+ public boolean isUseLegacyLocalRepository()
+ {
+ return this.useSimpleLocalRepositoryManager;
+ }
+
+ public MavenExecutionRequest setUseLegacyLocalRepository( boolean useSimpleLocalRepositoryManager )
+ {
+ this.useSimpleLocalRepositoryManager = useSimpleLocalRepositoryManager;
+ return this;
+ }
}
diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
index d2f8111fb7..cb22b3872c 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
@@ -19,7 +19,6 @@ package org.apache.maven.execution;
* under the License.
*/
-import java.util.ArrayList;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.List;
@@ -39,7 +38,7 @@ public class DefaultMavenExecutionResult
private DependencyResolutionResult dependencyResolutionResult;
- private List exceptions = new CopyOnWriteArrayList( );
+ private List exceptions = new CopyOnWriteArrayList();
private Map buildSummaries;
diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
index ef91ccf59a..62b6662c3a 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
@@ -45,45 +45,45 @@ public interface MavenExecutionRequest
// Logging
// ----------------------------------------------------------------------
- final int LOGGING_LEVEL_DEBUG = Logger.LEVEL_DEBUG;
+ int LOGGING_LEVEL_DEBUG = Logger.LEVEL_DEBUG;
- final int LOGGING_LEVEL_INFO = Logger.LEVEL_INFO;
+ int LOGGING_LEVEL_INFO = Logger.LEVEL_INFO;
- final int LOGGING_LEVEL_WARN = Logger.LEVEL_WARN;
+ int LOGGING_LEVEL_WARN = Logger.LEVEL_WARN;
- final int LOGGING_LEVEL_ERROR = Logger.LEVEL_ERROR;
+ int LOGGING_LEVEL_ERROR = Logger.LEVEL_ERROR;
- final int LOGGING_LEVEL_FATAL = Logger.LEVEL_FATAL;
+ int LOGGING_LEVEL_FATAL = Logger.LEVEL_FATAL;
- final int LOGGING_LEVEL_DISABLED = Logger.LEVEL_DISABLED;
+ int LOGGING_LEVEL_DISABLED = Logger.LEVEL_DISABLED;
// ----------------------------------------------------------------------
// Reactor Failure Mode
// ----------------------------------------------------------------------
- final String REACTOR_FAIL_FAST = "FAIL_FAST";
+ String REACTOR_FAIL_FAST = "FAIL_FAST";
- final String REACTOR_FAIL_AT_END = "FAIL_AT_END";
+ String REACTOR_FAIL_AT_END = "FAIL_AT_END";
- final String REACTOR_FAIL_NEVER = "FAIL_NEVER";
+ String REACTOR_FAIL_NEVER = "FAIL_NEVER";
// ----------------------------------------------------------------------
// Reactor Make Mode
// ----------------------------------------------------------------------
- final String REACTOR_MAKE_UPSTREAM = "make-upstream";
+ String REACTOR_MAKE_UPSTREAM = "make-upstream";
- final String REACTOR_MAKE_DOWNSTREAM = "make-downstream";
+ String REACTOR_MAKE_DOWNSTREAM = "make-downstream";
- final String REACTOR_MAKE_BOTH = "make-both";
+ String REACTOR_MAKE_BOTH = "make-both";
// ----------------------------------------------------------------------
// Artifact repository policies
// ----------------------------------------------------------------------
- final String CHECKSUM_POLICY_FAIL = ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL;
+ String CHECKSUM_POLICY_FAIL = ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL;
- final String CHECKSUM_POLICY_WARN = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
+ String CHECKSUM_POLICY_WARN = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
// ----------------------------------------------------------------------
//
@@ -283,4 +283,14 @@ public interface MavenExecutionRequest
ProjectBuildingRequest getProjectBuildingRequest();
+ /**
+ * @since 3.1
+ */
+ boolean isUseLegacyLocalRepository();
+
+ /**
+ * @since 3.1
+ */
+ MavenExecutionRequest setUseLegacyLocalRepository( boolean useLegacyLocalRepository );
+
}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
index 2e63647487..2c228ba645 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
@@ -48,7 +48,7 @@ import java.util.Set;
/**
* Common code that is shared by the LifecycleModuleBuilder and the LifeCycleWeaveBuilder
- *
+ *
* @since 3.0
* @author Kristian Rosenvold
* Builds one or more lifecycles for a full module
@@ -134,7 +134,8 @@ public class BuilderCommon
}
public void handleBuildError( final ReactorContext buildContext, final MavenSession rootSession,
- final MavenProject mavenProject, Exception e, final long buildStartTime )
+ final MavenSession currentSession, final MavenProject mavenProject, Exception e,
+ final long buildStartTime )
{
if ( e instanceof RuntimeException )
{
@@ -147,7 +148,7 @@ public class BuilderCommon
buildContext.getResult().addBuildSummary( new BuildFailure( mavenProject, buildEndTime - buildStartTime, e ) );
- eventCatapult.fire( ExecutionEvent.Type.ProjectFailed, rootSession, null, e );
+ eventCatapult.fire( ExecutionEvent.Type.ProjectFailed, currentSession, null, e );
if ( MavenExecutionRequest.REACTOR_FAIL_NEVER.equals( rootSession.getReactorFailureBehavior() ) )
{
@@ -186,5 +187,4 @@ public class BuilderCommon
return project.getGroupId() + ':' + project.getArtifactId() + ':' + project.getVersion();
}
-
-}
\ No newline at end of file
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/CurrentPhaseForThread.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/CurrentPhaseForThread.java
index 548bfcab65..f05425336e 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/CurrentPhaseForThread.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/CurrentPhaseForThread.java
@@ -29,17 +29,16 @@ package org.apache.maven.lifecycle.internal;
*/
class CurrentPhaseForThread
{
- private static final InheritableThreadLocal threadPhase = new InheritableThreadLocal();
-
+ private static final InheritableThreadLocal THREAD_PHASE = new InheritableThreadLocal();
public static void setPhase( String phase )
{
- threadPhase.set( phase );
+ THREAD_PHASE.set( phase );
}
public static boolean isPhase( String phase )
{
- return phase.equals( threadPhase.get() );
+ return phase.equals( THREAD_PHASE.get() );
}
}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
index b28e6c0132..58a7a624af 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
@@ -1,19 +1,24 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
package org.apache.maven.lifecycle.internal;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -219,11 +224,10 @@ public class DefaultLifecycleExecutionPlanCalculator
if ( lifecycle == null )
{
- throw new LifecyclePhaseNotFoundException(
- "Unknown lifecycle phase \"" + lifecyclePhase + "\". You must specify a valid lifecycle phase" +
- " or a goal in the format : or" +
- " :[:]:. Available lifecycle phases are: " +
- defaultLifeCycles.getLifecyclePhaseList() + ".", lifecyclePhase );
+ throw new LifecyclePhaseNotFoundException( "Unknown lifecycle phase \"" + lifecyclePhase
+ + "\". You must specify a valid lifecycle phase" + " or a goal in the format : or"
+ + " :[:]:. Available lifecycle phases are: "
+ + defaultLifeCycles.getLifecyclePhaseList() + ".", lifecyclePhase );
}
/*
@@ -432,8 +436,8 @@ public class DefaultLifecycleExecutionPlanCalculator
{
parameterConfiguration = new Xpp3Dom( parameterConfiguration, parameter.getName() );
- if ( StringUtils.isEmpty( parameterConfiguration.getAttribute( "implementation" ) ) &&
- StringUtils.isNotEmpty( parameter.getImplementation() ) )
+ if ( StringUtils.isEmpty( parameterConfiguration.getAttribute( "implementation" ) )
+ && StringUtils.isNotEmpty( parameter.getImplementation() ) )
{
parameterConfiguration.setAttribute( "implementation", parameter.getImplementation() );
}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java
index afd0034119..a5e6a34c2e 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java
@@ -80,8 +80,8 @@ public class DefaultLifecyclePluginAnalyzer
{
if ( logger.isDebugEnabled() )
{
- logger.debug( "Looking up lifecyle mappings for packaging " + packaging + " from " +
- Thread.currentThread().getContextClassLoader() );
+ logger.debug( "Looking up lifecyle mappings for packaging " + packaging + " from "
+ + Thread.currentThread().getContextClassLoader() );
}
LifecycleMapping lifecycleMappingForPackaging = lifecycleMappings.get( packaging );
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ExecutionPlanItem.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ExecutionPlanItem.java
index 075524a632..027b241196 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ExecutionPlanItem.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ExecutionPlanItem.java
@@ -94,8 +94,8 @@ public class ExecutionPlanItem
@Override
public String toString()
{
- return "ExecutionPlanItem{" + ", mojoExecution=" + mojoExecution + ", schedule=" + schedule + '}' +
- super.toString();
+ return "ExecutionPlanItem{" + ", mojoExecution=" + mojoExecution + ", schedule=" + schedule + '}'
+ + super.toString();
}
}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
index a549ce2b33..075283d3dc 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
@@ -1,20 +1,33 @@
package org.apache.maven.lifecycle.internal;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
@@ -37,8 +50,6 @@ import org.sonatype.aether.graph.DependencyNode;
import org.sonatype.aether.util.filter.AndDependencyFilter;
import org.sonatype.aether.util.filter.ScopeDependencyFilter;
-import java.util.*;
-
/**
* Resolves dependencies for the artifacts in context of the lifecycle build
*
@@ -49,7 +60,7 @@ import java.util.*;
*
* NOTE: This class is not part of any public api and can be changed or deleted without prior notice.
*/
-@Component(role = LifecycleDependencyResolver.class)
+@Component( role = LifecycleDependencyResolver.class )
public class LifecycleDependencyResolver
{
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
index fe69c0a120..c8a3cf4a2d 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
@@ -32,7 +32,7 @@ import java.util.HashSet;
/**
* Builds one or more lifecycles for a full module
- *
+ *
* @since 3.0
* @author Benjamin Bentmann
* @author Jason van Zyl
@@ -92,7 +92,7 @@ public class LifecycleModuleBuilder
}
catch ( Exception e )
{
- builderCommon.handleBuildError( reactorContext, rootSession, currentProject, e, buildStartTime );
+ builderCommon.handleBuildError( reactorContext, rootSession, session, currentProject, e, buildStartTime );
}
finally
{
@@ -101,4 +101,4 @@ public class LifecycleModuleBuilder
Thread.currentThread().setContextClassLoader( reactorContext.getOriginalContextClassLoader() );
}
}
-}
\ No newline at end of file
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
index 12058e5307..4cfae7317c 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
@@ -212,7 +212,8 @@ public class LifecycleWeaveBuilder
{
Iterator planItems = executionPlan.iterator();
ExecutionPlanItem current = planItems.hasNext() ? planItems.next() : null;
- ThreadLockedArtifact threadLockedArtifact = (ThreadLockedArtifact)projectBuild.getProject().getArtifact();
+ ThreadLockedArtifact threadLockedArtifact =
+ (ThreadLockedArtifact) projectBuild.getProject().getArtifact();
if ( threadLockedArtifact != null )
{
threadLockedArtifact.attachToThread();
@@ -277,8 +278,8 @@ public class LifecycleWeaveBuilder
}
catch ( Exception e )
{
- builderCommon.handleBuildError( reactorContext, rootSession, projectBuild.getProject(), e,
- buildStartTime );
+ builderCommon.handleBuildError( reactorContext, rootSession, projectBuild.getSession(),
+ projectBuild.getProject(), e, buildStartTime );
}
finally
{
@@ -375,13 +376,14 @@ public class LifecycleWeaveBuilder
return null;
}
- private static boolean isThreadLockedAndEmpty(Artifact artifact){
- return artifact instanceof ThreadLockedArtifact && !((ThreadLockedArtifact) artifact).hasReal();
+ private static boolean isThreadLockedAndEmpty( Artifact artifact )
+ {
+ return artifact instanceof ThreadLockedArtifact && !( (ThreadLockedArtifact) artifact ).hasReal();
}
private static Artifact findDependency( MavenProject project, Artifact upStreamArtifact )
{
- if ( upStreamArtifact == null || isThreadLockedAndEmpty(upStreamArtifact))
+ if ( upStreamArtifact == null || isThreadLockedAndEmpty( upStreamArtifact ) )
{
return null;
}
@@ -483,8 +485,6 @@ public class LifecycleWeaveBuilder
artifactInThis.setFile( upstream.getFile() );
artifactInThis.setRepository( upstream.getRepository() );
artifactInThis.setResolved( true ); // Or maybe upstream.isResolved()....
-
}
}
-
-}
\ No newline at end of file
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadLockedArtifact.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadLockedArtifact.java
index b566e641d8..9c6cf40119 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadLockedArtifact.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ThreadLockedArtifact.java
@@ -52,8 +52,8 @@ class ThreadLockedArtifact
public boolean hasReal()
{
- return real != null &&
- ( !( real instanceof ThreadLockedArtifact ) || ( (ThreadLockedArtifact) real ).hasReal() );
+ return real != null
+ && ( !( real instanceof ThreadLockedArtifact ) || ( (ThreadLockedArtifact) real ).hasReal() );
}
public String getGroupId()
@@ -96,17 +96,17 @@ class ThreadLockedArtifact
return real.hasClassifier();
}
- private static final InheritableThreadLocal threadArtifact =
+ private static final InheritableThreadLocal THREAD_ARTIFACT =
new InheritableThreadLocal();
public void attachToThread()
{
- threadArtifact.set( this );
+ THREAD_ARTIFACT.set( this );
}
public File getFile()
{
- final ThreadLockedArtifact lockedArtifact = threadArtifact.get();
+ final ThreadLockedArtifact lockedArtifact = THREAD_ARTIFACT.get();
if ( lockedArtifact != null && this != lockedArtifact && mustLock() )
{
try
diff --git a/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java b/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
index d2486b480f..46aeb0b6af 100644
--- a/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
+++ b/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
@@ -66,9 +66,9 @@ public class DefaultLifecycleBindingsInjector
if ( defaultPlugins == null )
{
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( "Unknown packaging: " + packaging )
- .setLocation( model.getLocation( "packaging" )));
+ .setLocation( model.getLocation( "packaging" ) ) );
}
else if ( !defaultPlugins.isEmpty() )
{
@@ -80,7 +80,7 @@ public class DefaultLifecycleBindingsInjector
}
}
- private static class LifecycleBindingsMerger
+ protected static class LifecycleBindingsMerger
extends MavenModelMerger
{
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/BuildPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/BuildPluginManager.java
index 48eed40bde..5e93bcebde 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/BuildPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/BuildPluginManager.java
@@ -1,18 +1,22 @@
package org.apache.maven.plugin;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import java.util.List;
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
index 3ae2c58cc5..fee2eb0eac 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
@@ -1,18 +1,22 @@
package org.apache.maven.plugin;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import java.io.ByteArrayOutputStream;
@@ -33,7 +37,7 @@ import org.sonatype.aether.repository.RemoteRepository;
// TODO: the antrun plugin has its own configurator, the only plugin that does. might need to think about how that works
// TODO: remove the coreArtifactFilterManager
-@Component(role = BuildPluginManager.class)
+@Component( role = BuildPluginManager.class )
public class DefaultBuildPluginManager
implements BuildPluginManager
{
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
index 6d8051a28e..5c703ce5bb 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
@@ -53,8 +53,8 @@ import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
* mojo.*
(since Maven 3)
* plugin
(since Maven 3) {@link MojoExecution#getMojoDescriptor()}.{@link MojoDescriptor#getPluginDescriptor() getPluginDescriptor()}
* plugin.*
- * system properties
- * project properties
+ * *
system properties
+ * *
project properties
*
* Notice: reports
was supported in Maven 2.x but was removed in Maven 3
*
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
index aea096316e..a71a0007a5 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
@@ -19,9 +19,11 @@ package org.apache.maven.plugin.internal;
* under the License.
*/
+import java.util.concurrent.atomic.AtomicReference;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.LegacySupport;
import org.codehaus.plexus.component.annotations.Component;
+
import org.sonatype.aether.RepositorySystemSession;
/**
@@ -37,29 +39,30 @@ public class DefaultLegacySupport
implements LegacySupport
{
- private static final ThreadLocal session = new InheritableThreadLocal();
+ private static final ThreadLocal> SESSION = new InheritableThreadLocal>();
public void setSession( MavenSession session )
{
- if ( session == null )
+ AtomicReference reference = DefaultLegacySupport.SESSION.get();
+ if ( reference != null )
{
- MavenSession[] oldSession = DefaultLegacySupport.session.get();
- if ( oldSession != null )
- {
- oldSession[0] = null;
- DefaultLegacySupport.session.remove();
- }
+ reference.set( null );
+ }
+
+ if ( session == null && reference != null )
+ {
+ DefaultLegacySupport.SESSION.remove();
}
else
{
- DefaultLegacySupport.session.set( new MavenSession[] { session } );
+ DefaultLegacySupport.SESSION.set( new AtomicReference( session ) );
}
}
public MavenSession getSession()
{
- MavenSession[] currentSession = DefaultLegacySupport.session.get();
- return currentSession != null ? currentSession[0] : null;
+ AtomicReference currentSession = DefaultLegacySupport.SESSION.get();
+ return currentSession != null ? currentSession.get() : null;
}
public RepositorySystemSession getRepositorySession()
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index 603e670403..4429f44771 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -83,6 +83,7 @@ import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.LoggerManager;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.StringUtils;
@@ -110,6 +111,9 @@ public class DefaultMavenPluginManager
@Requirement
private Logger logger;
+ @Requirement
+ private LoggerManager loggerManager;
+
@Requirement
private PlexusContainer container;
@@ -508,7 +512,8 @@ public class DefaultMavenPluginManager
if ( mojo instanceof Mojo )
{
- ( (Mojo) mojo ).setLog( new DefaultLog( logger ) );
+ Logger mojoLogger = loggerManager.getLoggerForComponent( mojoDescriptor.getImplementation() );
+ ( (Mojo) mojo ).setLog( new DefaultLog( mojoLogger ) );
}
Xpp3Dom dom = mojoExecution.getConfiguration();
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
index 1aa578eddb..60d83141a1 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
@@ -50,7 +50,7 @@ public interface PluginDependenciesResolver
* @return The resolved plugin artifact, never {@code null}.
* @throws PluginResolutionException If the plugin artifact could not be resolved.
*/
- public Artifact resolve( Plugin plugin, List repositories, RepositorySystemSession session )
+ Artifact resolve( Plugin plugin, List repositories, RepositorySystemSession session )
throws PluginResolutionException;
/**
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/prefix/PluginPrefixResult.java b/maven-core/src/main/java/org/apache/maven/plugin/prefix/PluginPrefixResult.java
index f21b6701d8..0e67f37bea 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/prefix/PluginPrefixResult.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/prefix/PluginPrefixResult.java
@@ -1,7 +1,5 @@
package org.apache.maven.plugin.prefix;
-import org.sonatype.aether.repository.ArtifactRepository;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -11,7 +9,7 @@ import org.sonatype.aether.repository.ArtifactRepository;
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -21,6 +19,8 @@ import org.sonatype.aether.repository.ArtifactRepository;
* under the License.
*/
+import org.sonatype.aether.repository.ArtifactRepository;
+
/**
* Describes the result of a plugin prefix resolution request.
*
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java b/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
index 30423ce4ab..3aebe9b4b7 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
@@ -97,9 +97,9 @@ class DefaultModelBuildingListener
}
catch ( Exception e )
{
- event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
+ event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( "Invalid plugin repository: " + e.getMessage() )
- .setException( e ));
+ .setException( e ) );
}
project.setPluginArtifactRepositories( pluginRepositories );
@@ -115,15 +115,15 @@ class DefaultModelBuildingListener
}
catch ( PluginResolutionException e )
{
- event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
- .setMessage( "Unresolveable build extension: " + e.getMessage())
- .setException( e ));
+ event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "Unresolveable build extension: " + e.getMessage() )
+ .setException( e ) );
}
catch ( PluginVersionResolutionException e )
{
- event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
+ event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( "Unresolveable build extension: " + e.getMessage() )
- .setException( e ));
+ .setException( e ) );
}
projectBuildingHelper.selectProjectRealm( project );
@@ -138,9 +138,9 @@ class DefaultModelBuildingListener
}
catch ( Exception e )
{
- event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
+ event.getProblems().add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( "Invalid artifact repository: " + e.getMessage() )
- .setException( e ));
+ .setException( e ) );
}
project.setRemoteArtifactRepositories( remoteRepositories );
}
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index 4e4db80d4b..a242ee579c 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -1,18 +1,22 @@
package org.apache.maven.project;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import java.io.File;
diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
index 5090c3e4f7..0349e8aa86 100644
--- a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
+++ b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
@@ -1,18 +1,22 @@
package org.apache.maven.project;
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
import org.apache.maven.RepositoryUtils;
@@ -1477,7 +1481,7 @@ public class MavenProject
for ( int ax = 0; ax < attachedArtifacts.size(); ax++ )
{
Artifact a = attachedArtifacts.get( ax );
- if ( a.equals( artifact ))
+ if ( a.equals( artifact ) )
{
if ( logger != null )
{
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
index 39522f6843..db8fe902fa 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
@@ -79,7 +79,7 @@ public interface ProjectBuildingRequest
*/
Properties getUserProperties();
- void setProject(MavenProject mavenProject);
+ void setProject( MavenProject mavenProject );
MavenProject getProject();
diff --git a/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java b/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java
index 147b7cf8ef..7bcd442539 100644
--- a/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java
+++ b/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java
@@ -42,17 +42,17 @@ import org.sonatype.aether.RepositorySystemSession;
*/
public interface RepositorySystem
{
- final String DEFAULT_LOCAL_REPO_ID = "local";
+ String DEFAULT_LOCAL_REPO_ID = "local";
- final String userHome = System.getProperty( "user.home" );
+ String userHome = System.getProperty( "user.home" );
- final File userMavenConfigurationHome = new File( userHome, ".m2" );
+ File userMavenConfigurationHome = new File( userHome, ".m2" );
- final File defaultUserLocalRepository = new File( userMavenConfigurationHome, "repository" );
+ File defaultUserLocalRepository = new File( userMavenConfigurationHome, "repository" );
- final String DEFAULT_REMOTE_REPO_ID = "central";
+ String DEFAULT_REMOTE_REPO_ID = "central";
- final String DEFAULT_REMOTE_REPO_URL = "http://repo.maven.apache.org/maven2";
+ String DEFAULT_REMOTE_REPO_URL = "http://repo.maven.apache.org/maven2";
Artifact createArtifact( String groupId, String artifactId, String version, String packaging );
diff --git a/maven-core/src/main/resources/META-INF/plexus/components.xml b/maven-core/src/main/resources/META-INF/plexus/components.xml
index 07515533e5..6282ba0971 100644
--- a/maven-core/src/main/resources/META-INF/plexus/components.xml
+++ b/maven-core/src/main/resources/META-INF/plexus/components.xml
@@ -129,10 +129,10 @@ under the License.
- org.apache.maven.plugins:maven-site-plugin:3.1:site
+ org.apache.maven.plugins:maven-site-plugin:3.2:site
- org.apache.maven.plugins:maven-site-plugin:3.1:deploy
+ org.apache.maven.plugins:maven-site-plugin:3.2:deploy
diff --git a/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml b/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
index 39fe4bb8a3..09ecba441e 100644
--- a/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
+++ b/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
@@ -258,7 +258,7 @@ Mappings to default lifecycle, specific for each packaging.
org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
- org.apache.maven.plugins:maven-war-plugin:2.3:war
+ org.apache.maven.plugins:maven-war-plugin:2.2:war
org.apache.maven.plugins:maven-install-plugin:2.4:install
diff --git a/maven-core/src/site/apt/artifact-handlers.apt b/maven-core/src/site/apt/artifact-handlers.apt
index 7f211a6ac7..3eea01785f 100644
--- a/maven-core/src/site/apt/artifact-handlers.apt
+++ b/maven-core/src/site/apt/artifact-handlers.apt
@@ -1,41 +1,41 @@
- ---
- Default Artifact Handlers Reference
- ---
- Hervé Boutemy
- ---
- 2012-08-13
- ---
-
-Default Artifact Handlers Reference
-
- Some artifact handlers are defined by default:
-
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-|| type || extension || packaging || classifier || language || added to classpath || includesDependencies ||
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | none | | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <= type> | | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <= type> | | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | | <<>> |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | | <<>> |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | | <<>> |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | | <<>> |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <= type> | <= type> | | java | | <<>> |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <= type> | <<>> | java | | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <= type> | <<>> | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <<>> | <<>> | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
-| <<>> | <<>> | <<>> | <<>> | java | <<>> | |
-*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+ ---
+ Default Artifact Handlers Reference
+ ---
+ Hervé Boutemy
+ ---
+ 2012-08-13
+ ---
+
+Default Artifact Handlers Reference
+
+ Some artifact handlers are defined by default:
+
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+|| type || extension || packaging || classifier || language || added to classpath || includesDependencies ||
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | none | | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <= type> | | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <= type> | | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | | <<>> |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | | <<>> |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | | <<>> |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | | <<>> |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <= type> | <= type> | | java | | <<>> |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <= type> | <<>> | java | | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <= type> | <<>> | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <<>> | <<>> | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
+| <<>> | <<>> | <<>> | <<>> | java | <<>> | |
+*--------------------+------------+------------+---------------+-----------+---------------------+-----------------------+
diff --git a/maven-core/src/site/apt/index.apt b/maven-core/src/site/apt/index.apt
index 72d4696a7d..f1c63294ce 100644
--- a/maven-core/src/site/apt/index.apt
+++ b/maven-core/src/site/apt/index.apt
@@ -26,4 +26,10 @@ Maven Core
({{{./xref/org/apache/maven/plugin/internal/DefaultMavenPluginManager.html}source}}),
* {{{./apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html}PluginParameterExpressionEvaluator}}, used to
- evaluate plugin parameters values during Mojo configuration.
+ evaluate plugin parameters values during Mojo configuration,
+
+ * {{{/guides/mini/guide-maven-classloading.html}classloader hierarchy}} done by <<>> component
+ ({{{./apidocs/org/apache/maven/classrealm/ClassRealmManager.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/classrealm/DefaultClassRealmManager.html}source}}), using
+ {{{http://plexus.codehaus.org/plexus-classworlds/}Plexus Classworlds}}.
diff --git a/maven-core/src/test/java/org/apache/maven/artifact/handler/ArtifactHandlerTest.java b/maven-core/src/test/java/org/apache/maven/artifact/handler/ArtifactHandlerTest.java
index 2edbcf4410..ac02e106d3 100644
--- a/maven-core/src/test/java/org/apache/maven/artifact/handler/ArtifactHandlerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/artifact/handler/ArtifactHandlerTest.java
@@ -1,89 +1,89 @@
-package org.apache.maven.artifact.handler;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.util.List;
-
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.util.FileUtils;
-
-public class ArtifactHandlerTest
- extends PlexusTestCase
-{
- public void testAptConsistency()
- throws Exception
- {
- File apt = getTestFile( "src/site/apt/artifact-handlers.apt" );
-
- @SuppressWarnings( "unchecked" )
- List lines = FileUtils.loadFile( apt );
-
- for ( String line : lines )
- {
- if ( line.startsWith( "||" ) )
- {
- String[] cols = line.split( "\\|\\|" );
- String[] expected =
- new String[] { "", "type", "extension", "packaging", "classifier", "language", "added to classpath",
- "includesDependencies", "" };
-
- int i = 0;
- for ( String col : cols )
- {
- assertEquals( "Wrong column header", expected[i++], col.trim() );
- }
- }
- else if ( line.startsWith( "|" ) )
- {
- String[] cols = line.split( "\\|" );
-
- String type = trimApt( cols[1] );
- String extension = trimApt( cols[2], type );
- String packaging = trimApt( cols[3], type );
- String classifier = trimApt( cols[4] );
- String language = trimApt( cols[5] );
- String addedToClasspath = trimApt( cols[6] );
- String includesDependencies = trimApt( cols[7] );
-
- ArtifactHandler handler = lookup( ArtifactHandler.class, type );
- assertEquals( type + " extension", handler.getExtension(), extension );
- assertEquals( type + " packaging", handler.getPackaging(), packaging );
- assertEquals( type + " classifier", handler.getClassifier(), classifier );
- assertEquals( type + " language", handler.getLanguage(), language );
- assertEquals( type + " addedToClasspath", handler.isAddedToClasspath() ? "true" : null, addedToClasspath );
- assertEquals( type + " includesDependencies", handler.isIncludesDependencies() ? "true" : null, includesDependencies );
- }
- }
- }
-
- private String trimApt( String content, String type )
- {
- String value = trimApt( content );
- return "= type".equals( value ) ? type : value;
- }
-
- private String trimApt( String content )
- {
- content = content.replace( '<', ' ' ).replace( '>', ' ' ).trim();
-
- return ( content.length() == 0 ) ? null : content;
- }
-}
+package org.apache.maven.artifact.handler;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.List;
+
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+public class ArtifactHandlerTest
+ extends PlexusTestCase
+{
+ public void testAptConsistency()
+ throws Exception
+ {
+ File apt = getTestFile( "src/site/apt/artifact-handlers.apt" );
+
+ @SuppressWarnings( "unchecked" )
+ List lines = FileUtils.loadFile( apt );
+
+ for ( String line : lines )
+ {
+ if ( line.startsWith( "||" ) )
+ {
+ String[] cols = line.split( "\\|\\|" );
+ String[] expected =
+ new String[] { "", "type", "extension", "packaging", "classifier", "language", "added to classpath",
+ "includesDependencies", "" };
+
+ int i = 0;
+ for ( String col : cols )
+ {
+ assertEquals( "Wrong column header", expected[i++], col.trim() );
+ }
+ }
+ else if ( line.startsWith( "|" ) )
+ {
+ String[] cols = line.split( "\\|" );
+
+ String type = trimApt( cols[1] );
+ String extension = trimApt( cols[2], type );
+ String packaging = trimApt( cols[3], type );
+ String classifier = trimApt( cols[4] );
+ String language = trimApt( cols[5] );
+ String addedToClasspath = trimApt( cols[6] );
+ String includesDependencies = trimApt( cols[7] );
+
+ ArtifactHandler handler = lookup( ArtifactHandler.class, type );
+ assertEquals( type + " extension", handler.getExtension(), extension );
+ assertEquals( type + " packaging", handler.getPackaging(), packaging );
+ assertEquals( type + " classifier", handler.getClassifier(), classifier );
+ assertEquals( type + " language", handler.getLanguage(), language );
+ assertEquals( type + " addedToClasspath", handler.isAddedToClasspath() ? "true" : null, addedToClasspath );
+ assertEquals( type + " includesDependencies", handler.isIncludesDependencies() ? "true" : null, includesDependencies );
+ }
+ }
+ }
+
+ private String trimApt( String content, String type )
+ {
+ String value = trimApt( content );
+ return "= type".equals( value ) ? type : value;
+ }
+
+ private String trimApt( String content )
+ {
+ content = content.replace( '<', ' ' ).replace( '>', ' ' ).trim();
+
+ return ( content.length() == 0 ) ? null : content;
+ }
+}
diff --git a/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java b/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
index aa81f4642e..9727bdf8a2 100644
--- a/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/exception/DefaultExceptionHandlerTest.java
@@ -1,60 +1,60 @@
-package org.apache.maven.exception;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.net.ConnectException;
-
-import org.apache.maven.plugin.MojoExecutionException;
-
-import junit.framework.TestCase;
-
-/**
- * @author Barrie Treloar
- */
-public class DefaultExceptionHandlerTest
- extends TestCase
-{
- /**
- * Running Maven under JDK7 may cause connection issues because IPv6 is used by default.
- *
- * e.g running mvn site:run will cause Jetty to fail.
- *
- *
- * The resolution is to add -Djava.net.preferIPv4Stack=true to the command line as documented in
- * http://cwiki.apache.org/confluence/display/MAVEN/ConnectException
- *
- */
- public void testJdk7ipv6()
- {
- ConnectException connEx = new ConnectException( "Connection refused: connect" );
- IOException ioEx = new IOException( "Unable to establish loopback connection" );
- ioEx.initCause( connEx );
- MojoExecutionException mojoEx =
- new MojoExecutionException( "Error executing Jetty: Unable to establish loopback connection", ioEx );
-
- ExceptionHandler exceptionHandler = new DefaultExceptionHandler();
- ExceptionSummary exceptionSummary = exceptionHandler.handleException( mojoEx );
-
- String expectedReference = "http://cwiki.apache.org/confluence/display/MAVEN/ConnectException";
- assertEquals( expectedReference, exceptionSummary.getReference() );
-
- }
-}
+package org.apache.maven.exception;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.IOException;
+import java.net.ConnectException;
+
+import org.apache.maven.plugin.MojoExecutionException;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Barrie Treloar
+ */
+public class DefaultExceptionHandlerTest
+ extends TestCase
+{
+ /**
+ * Running Maven under JDK7 may cause connection issues because IPv6 is used by default.
+ *
+ * e.g running mvn site:run will cause Jetty to fail.
+ *
+ *
+ * The resolution is to add -Djava.net.preferIPv4Stack=true to the command line as documented in
+ * http://cwiki.apache.org/confluence/display/MAVEN/ConnectException
+ *
+ */
+ public void testJdk7ipv6()
+ {
+ ConnectException connEx = new ConnectException( "Connection refused: connect" );
+ IOException ioEx = new IOException( "Unable to establish loopback connection" );
+ ioEx.initCause( connEx );
+ MojoExecutionException mojoEx =
+ new MojoExecutionException( "Error executing Jetty: Unable to establish loopback connection", ioEx );
+
+ ExceptionHandler exceptionHandler = new DefaultExceptionHandler();
+ ExceptionSummary exceptionSummary = exceptionHandler.handleException( mojoEx );
+
+ String expectedReference = "http://cwiki.apache.org/confluence/display/MAVEN/ConnectException";
+ assertEquals( expectedReference, exceptionSummary.getReference() );
+
+ }
+}
diff --git a/maven-core/src/test/java/org/apache/maven/plugin/internal/DefaultLegacySupportTest.java b/maven-core/src/test/java/org/apache/maven/plugin/internal/DefaultLegacySupportTest.java
new file mode 100644
index 0000000000..d350770cbc
--- /dev/null
+++ b/maven-core/src/test/java/org/apache/maven/plugin/internal/DefaultLegacySupportTest.java
@@ -0,0 +1,74 @@
+package org.apache.maven.plugin.internal;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
+
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * @author Kristian Rosenvold
+ */
+public class DefaultLegacySupportTest extends TestCase {
+ final CountDownLatch latch = new CountDownLatch(1);
+ final DefaultLegacySupport defaultLegacySupport = new DefaultLegacySupport();
+
+ public void testSetSession() throws Exception {
+
+ MavenExecutionRequest mavenExecutionRequest = new DefaultMavenExecutionRequest();
+ MavenSession m1 = new MavenSession(null, null, mavenExecutionRequest, null);
+ defaultLegacySupport.setSession(m1);
+
+ MyRunnable myRunnable = new MyRunnable();
+ Thread thread = new Thread(myRunnable);
+ thread.start();
+
+ MavenSession m2 = new MavenSession(null, null, mavenExecutionRequest, null);
+ defaultLegacySupport.setSession(m2);
+ latch.countDown();
+ thread.join();
+ assertNull( myRunnable.getSession());
+ }
+
+
+ class MyRunnable implements Runnable {
+
+ private volatile MavenSession session;
+
+ public void run() {
+ try
+ {
+ latch.await();
+ }
+ catch (InterruptedException ingore)
+ {
+ // Test may fail if we get interrupted
+ }
+ session = defaultLegacySupport.getSession();
+ }
+
+ public MavenSession getSession() {
+ return session;
+ }
+ }
+
+}
diff --git a/maven-embedder/pom.xml b/maven-embedder/pom.xml
index 587398f371..49a7b57629 100644
--- a/maven-embedder/pom.xml
+++ b/maven-embedder/pom.xml
@@ -74,6 +74,16 @@
org.slf4j
slf4j-api
+
+ org.slf4j
+ slf4j-simple
+ true
+
+
+ ch.qos.logback
+ logback-classic
+ true
+
commons-cli
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
index 0e7f2b622a..d30a16dcae 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
@@ -97,6 +97,8 @@ public class CLIManager
public static final String THREADS = "T";
+ public static final String LEGACY_LOCAL_REPOSITORY ="llr";
+
protected Options options;
@SuppressWarnings( "static-access" )
@@ -133,9 +135,9 @@ public class CLIManager
options.addOption( OptionBuilder.withLongOpt( "encrypt-master-password" ).hasArg().withDescription( "Encrypt master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
options.addOption( OptionBuilder.withLongOpt( "encrypt-password" ).hasArg().withDescription( "Encrypt server password" ).create( ENCRYPT_PASSWORD ) );
options.addOption( OptionBuilder.withLongOpt( "threads" ).hasArg().withDescription( "Thread count, for instance 2.0C where C is core multiplied" ).create( THREADS ) );
+ options.addOption( OptionBuilder.withLongOpt( "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local Repository behaviour, ie no use of _maven.repositories. Can also be activated by using -Dmaven.legacyLocalRepo=true" ).create( LEGACY_LOCAL_REPOSITORY ) );
// Adding this back in for compatibility with the verifier that hard codes this option.
-
options.addOption( OptionBuilder.withLongOpt( "no-plugin-registry" ).withDescription( "Ineffective, only kept for backward compatibility" ).create( "npr" ) );
options.addOption( OptionBuilder.withLongOpt( "check-plugin-updates" ).withDescription( "Ineffective, only kept for backward compatibility" ).create( "cpu" ) );
options.addOption( OptionBuilder.withLongOpt( "update-plugins" ).withDescription( "Ineffective, only kept for backward compatibility" ).create( "up" ) );
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java b/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
index 0f8262b102..6173959a1f 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
@@ -53,11 +53,15 @@ public final class CLIReportingUtils
Properties properties = getBuildProperties();
StringBuffer version = new StringBuffer();
version.append( createMavenVersionString( properties ) ).append( LS );
- version.append( reduce( properties.getProperty( "distributionShortName" ) + " home: " + System.getProperty( "maven.home", "" ) ) ).append( LS );
- version.append( "Java version: " + System.getProperty( "java.version", "" ) + ", vendor: " + System.getProperty( "java.vendor", "" ) ).append( LS );
+ version.append( reduce( properties.getProperty( "distributionShortName" ) + " home: "
+ + System.getProperty( "maven.home", "" ) ) ).append( LS );
+ version.append( "Java version: " + System.getProperty( "java.version", "" )
+ + ", vendor: " + System.getProperty( "java.vendor", "" ) ).append( LS );
version.append( "Java home: " + System.getProperty( "java.home", "" ) ).append( LS );
- version.append( "Default locale: " + Locale.getDefault() + ", platform encoding: " + System.getProperty( "file.encoding", "" ) ).append( LS );
- version.append( "OS name: \"" + Os.OS_NAME + "\", version: \"" + Os.OS_VERSION + "\", arch: \"" + Os.OS_ARCH + "\", family: \"" + Os.OS_FAMILY + "\"" );
+ version.append( "Default locale: " + Locale.getDefault() + ", platform encoding: "
+ + System.getProperty( "file.encoding", "" ) ).append( LS );
+ version.append( "OS name: \"" + Os.OS_NAME + "\", version: \"" + Os.OS_VERSION + "\", arch: \"" + Os.OS_ARCH
+ + "\", family: \"" + Os.OS_FAMILY + "\"" );
return version.toString();
}
@@ -79,7 +83,7 @@ public final class CLIReportingUtils
if ( rev != null || timestamp != null )
{
msg += " (";
- msg += ( rev != null ? "r" + rev : "" );
+ msg += ( rev != null ? rev : "" );
if ( timestamp != null )
{
SimpleDateFormat fmt = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ssZ" );
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 772f984494..0e71c8b718 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -39,7 +39,10 @@ import org.apache.maven.InternalErrorException;
import org.apache.maven.Maven;
import org.apache.maven.cli.event.DefaultEventSpyContext;
import org.apache.maven.cli.event.ExecutionEventLogger;
+import org.apache.maven.cli.logging.Slf4jConfiguration;
+import org.apache.maven.cli.logging.Slf4jConfigurationFactory;
import org.apache.maven.cli.logging.Slf4jLoggerManager;
+import org.apache.maven.cli.logging.Slf4jStdoutLogger;
import org.apache.maven.cli.transfer.ConsoleMavenTransferListener;
import org.apache.maven.cli.transfer.QuietMavenTransferListener;
import org.apache.maven.cli.transfer.Slf4jMavenTransferListener;
@@ -55,7 +58,6 @@ import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.internal.LifecycleWeaveBuilder;
import org.apache.maven.model.building.ModelProcessor;
-import org.apache.maven.plugin.PluginRealmCache;
import org.apache.maven.project.MavenProject;
import org.apache.maven.properties.internal.EnvironmentUtils;
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
@@ -208,6 +210,7 @@ public class MavenCli
settings( cliRequest );
populateRequest( cliRequest );
encryption( cliRequest );
+ repository( cliRequest );
return execute( cliRequest );
}
catch ( ExitException e )
@@ -233,7 +236,7 @@ public class MavenCli
}
finally
{
- if (localContainer != null)
+ if ( localContainer != null )
{
localContainer.dispose();
}
@@ -262,6 +265,12 @@ public class MavenCli
private void cli( CliRequest cliRequest )
throws Exception
{
+ //
+ // Parsing errors can happen during the processing of the arguments and we prefer not having to check if the logger is null
+ // and construct this so we can use an SLF4J logger everywhere.
+ //
+ slf4jLogger = new Slf4jStdoutLogger();
+
CLIManager cliManager = new CLIManager();
try
@@ -288,36 +297,40 @@ public class MavenCli
}
}
- //
- // All logging is handled by SFL4J
- //
+ /**
+ * configure logging
+ */
private void logging( CliRequest cliRequest )
{
cliRequest.debug = cliRequest.commandLine.hasOption( CLIManager.DEBUG );
cliRequest.quiet = !cliRequest.debug && cliRequest.commandLine.hasOption( CLIManager.QUIET );
cliRequest.showErrors = cliRequest.debug || cliRequest.commandLine.hasOption( CLIManager.ERRORS );
+ slf4jLoggerFactory = LoggerFactory.getILoggerFactory();
+ Slf4jConfiguration slf4jConfiguration = Slf4jConfigurationFactory.getConfiguration( slf4jLoggerFactory );
+
if ( cliRequest.debug )
{
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_DEBUG );
- System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", "debug" );
+ slf4jConfiguration.setRootLoggerLevel( Slf4jConfiguration.Level.DEBUG );
}
else if ( cliRequest.quiet )
{
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_ERROR );
- System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", "error" );
+ slf4jConfiguration.setRootLoggerLevel( Slf4jConfiguration.Level.ERROR );
}
else
{
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
- System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", "info" );
+ slf4jConfiguration.setRootLoggerLevel( Slf4jConfiguration.Level.INFO );
}
if ( cliRequest.commandLine.hasOption( CLIManager.LOG_FILE ) )
{
File logFile = new File( cliRequest.commandLine.getOptionValue( CLIManager.LOG_FILE ) );
logFile = resolveFile( logFile, cliRequest.workingDirectory );
- System.setProperty( "org.slf4j.simpleLogger.logFile", logFile.getAbsolutePath() );
+
+ // redirect stdout and stderr to file
try
{
PrintStream ps = new PrintStream( new FileOutputStream( logFile ) );
@@ -332,8 +345,9 @@ public class MavenCli
}
}
+ slf4jConfiguration.activate();
+
plexusLoggerManager = new Slf4jLoggerManager();
- slf4jLoggerFactory = LoggerFactory.getILoggerFactory();
slf4jLogger = slf4jLoggerFactory.getLogger( this.getClass().getName() );
}
@@ -377,29 +391,27 @@ public class MavenCli
DefaultPlexusContainer container = null;
- ContainerConfiguration cc = new DefaultContainerConfiguration()
- .setClassWorld( cliRequest.classWorld )
- .setRealm( setupContainerRealm( cliRequest ) )
- .setClassPathScanning( PlexusConstants.SCANNING_INDEX )
- .setAutoWiring( true )
- .setName( "maven" );
+ ContainerConfiguration cc = new DefaultContainerConfiguration()
+ .setClassWorld( cliRequest.classWorld )
+ .setRealm( setupContainerRealm( cliRequest ) )
+ .setClassPathScanning( PlexusConstants.SCANNING_INDEX )
+ .setAutoWiring( true )
+ .setName( "maven" );
- container = new DefaultPlexusContainer( cc, new AbstractModule()
+ container = new DefaultPlexusContainer( cc, new AbstractModule()
+ {
+ protected void configure()
{
+ bind( ILoggerFactory.class ).toInstance( slf4jLoggerFactory );
+ }
+ } );
- protected void configure()
- {
- bind( ILoggerFactory.class ).toInstance( slf4jLoggerFactory );
- }
+ // NOTE: To avoid inconsistencies, we'll use the TCCL exclusively for lookups
+ container.setLookupRealm( null );
- } );
+ container.setLoggerManager( plexusLoggerManager );
- // NOTE: To avoid inconsistencies, we'll use the TCCL exclusively for lookups
- container.setLookupRealm( null );
-
- container.setLoggerManager( plexusLoggerManager );
-
- customizeContainer( container );
+ customizeContainer( container );
container.getLoggerManager().setThresholds( cliRequest.request.getLoggingLevel() );
@@ -527,6 +539,15 @@ public class MavenCli
}
}
+ private void repository( CliRequest cliRequest )
+ throws Exception
+ {
+ if ( cliRequest.commandLine.hasOption( CLIManager.LEGACY_LOCAL_REPOSITORY ) || Boolean.getBoolean( "maven.legacyLocalRepo" ) )
+ {
+ cliRequest.request.setUseLegacyLocalRepository( true );
+ }
+ }
+
private int execute( CliRequest cliRequest )
{
eventSpyDispatcher.onEvent( cliRequest.request );
@@ -888,7 +909,7 @@ public class MavenCli
transferListener = getBatchTransferListener();
}
- ExecutionListener executionListener = new ExecutionEventLogger( slf4jLogger );
+ ExecutionListener executionListener = new ExecutionEventLogger();
executionListener = eventSpyDispatcher.chainListener( executionListener );
String alternatePomFile = null;
@@ -1154,7 +1175,7 @@ public class MavenCli
protected TransferListener getBatchTransferListener()
{
- return new Slf4jMavenTransferListener( slf4jLogger );
+ return new Slf4jMavenTransferListener();
}
protected void customizeContainer( PlexusContainer container )
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
index 819f179e12..f55141d4c3 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
@@ -31,9 +31,10 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
- * Logs execution events to a user-supplied logger.
+ * Logs execution events to logger, eventually user-supplied.
*
* @author Benjamin Bentmann
*/
@@ -44,6 +45,12 @@ public class ExecutionEventLogger
private static final int LINE_LENGTH = 72;
+ public ExecutionEventLogger()
+ {
+ logger = LoggerFactory.getLogger( ExecutionEventLogger.class );
+ }
+
+ // TODO should we deprecate?
public ExecutionEventLogger( Logger logger )
{
if ( logger == null )
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java
new file mode 100644
index 0000000000..a6961848db
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/BaseSlf4jConfiguration.java
@@ -0,0 +1,44 @@
+package org.apache.maven.cli.logging;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Abstract implementation.
+ *
+ * @author Hervé Boutemy
+ */
+public class BaseSlf4jConfiguration
+ implements Slf4jConfiguration
+{
+ private final Logger logger = LoggerFactory.getLogger( BaseSlf4jConfiguration.class );
+
+ public void setRootLoggerLevel( Level level )
+ {
+ logger.warn( "setRootLoggerLevel: operation not supported" );
+ }
+
+ public void activate()
+ {
+ logger.warn( "reset(): operation not supported" );
+ }
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/PrintStreamLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/PrintStreamLogger.java
deleted file mode 100644
index 53025a0daa..0000000000
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/PrintStreamLogger.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.apache.maven.cli.logging;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.PrintStream;
-
-import org.apache.maven.Maven;
-import org.codehaus.plexus.logging.AbstractLogger;
-import org.codehaus.plexus.logging.Logger;
-
-/**
- * Logs to a user-supplied {@link PrintStream}.
- *
- * @author Benjamin Bentmann
- */
-public class PrintStreamLogger
- extends AbstractLogger
-{
-
- public interface Provider
- {
- PrintStream getStream();
- }
-
- private Provider provider;
-
- private static final String FATAL_ERROR = "[FATAL] ";
-
- private static final String ERROR = "[ERROR] ";
-
- private static final String WARNING = "[WARNING] ";
-
- private static final String INFO = "[INFO] ";
-
- private static final String DEBUG = "[DEBUG] ";
-
- public PrintStreamLogger( Provider provider )
- {
- super( Logger.LEVEL_INFO, Maven.class.getName() );
-
- if ( provider == null )
- {
- throw new IllegalArgumentException( "output stream provider missing" );
- }
- this.provider = provider;
- }
-
- public PrintStreamLogger( PrintStream out )
- {
- super( Logger.LEVEL_INFO, Maven.class.getName() );
-
- setStream( out );
- }
-
- public void setStream( final PrintStream out )
- {
- if ( out == null )
- {
- throw new IllegalArgumentException( "output stream missing" );
- }
-
- this.provider = new Provider()
- {
- public PrintStream getStream()
- {
- return out;
- }
- };
- }
-
- public void debug( String message, Throwable throwable )
- {
- if ( isDebugEnabled() )
- {
- PrintStream out = provider.getStream();
-
- out.print( DEBUG );
- out.println( message );
-
- if ( null != throwable )
- {
- throwable.printStackTrace( out );
- }
- }
- }
-
- public void info( String message, Throwable throwable )
- {
- if ( isInfoEnabled() )
- {
- PrintStream out = provider.getStream();
-
- out.print( INFO );
- out.println( message );
-
- if ( null != throwable )
- {
- throwable.printStackTrace( out );
- }
- }
- }
-
- public void warn( String message, Throwable throwable )
- {
- if ( isWarnEnabled() )
- {
- PrintStream out = provider.getStream();
-
- out.print( WARNING );
- out.println( message );
-
- if ( null != throwable )
- {
- throwable.printStackTrace( out );
- }
- }
- }
-
- public void error( String message, Throwable throwable )
- {
- if ( isErrorEnabled() )
- {
- PrintStream out = provider.getStream();
-
- out.print( ERROR );
- out.println( message );
-
- if ( null != throwable )
- {
- throwable.printStackTrace( out );
- }
- }
- }
-
- public void fatalError( String message, Throwable throwable )
- {
- if ( isFatalErrorEnabled() )
- {
- PrintStream out = provider.getStream();
-
- out.print( FATAL_ERROR );
- out.println( message );
-
- if ( null != throwable )
- {
- throwable.printStackTrace( out );
- }
- }
- }
-
- public void close()
- {
- PrintStream out = provider.getStream();
-
- if ( out == System.out || out == System.err )
- {
- out.flush();
- }
- else
- {
- out.close();
- }
- }
-
- public Logger getChildLogger( String arg0 )
- {
- return this;
- }
-
-}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java
new file mode 100644
index 0000000000..661c9e3eb4
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfiguration.java
@@ -0,0 +1,43 @@
+package org.apache.maven.cli.logging;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Interface for configuration operations on loggers, which are not available in slf4j, then require per-slf4f-binding
+ * implementation.
+ *
+ * @author Hervé Boutemy
+ */
+public interface Slf4jConfiguration
+{
+ public static enum Level { DEBUG, INFO, ERROR }
+
+ /**
+ * Set root logging level.
+ *
+ * @param level the level
+ */
+ void setRootLoggerLevel( Level level );
+
+ /**
+ * Activate logging implementation configuration (if necessary).
+ */
+ void activate();
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfigurationFactory.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfigurationFactory.java
new file mode 100644
index 0000000000..2442a835f5
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jConfigurationFactory.java
@@ -0,0 +1,81 @@
+package org.apache.maven.cli.logging;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import org.codehaus.plexus.util.PropertyUtils;
+import org.slf4j.ILoggerFactory;
+
+/**
+ * Slf4jConfiguration factory, loading implementations from META-INF/maven/slf4j-configuration.properties
+ * configuration files in class loader.
+ *
+ * @author Hervé Boutemy
+ */
+public class Slf4jConfigurationFactory
+{
+ public static final String RESOURCE = "META-INF/maven/slf4j-configuration.properties";
+
+ public static Slf4jConfiguration getConfiguration( ILoggerFactory loggerFactory )
+ {
+ try
+ {
+ Enumeration resources = Slf4jConfigurationFactory.class.getClassLoader().getResources( RESOURCE );
+
+ String key = loggerFactory.getClass().getCanonicalName();
+
+ while ( resources.hasMoreElements() )
+ {
+ URL resource = resources.nextElement();
+
+ Properties conf = PropertyUtils.loadProperties( resource.openStream() );
+
+ String impl = conf.getProperty( key );
+
+ if ( impl != null )
+ {
+ return (Slf4jConfiguration) Class.forName( impl ).newInstance();
+ }
+ }
+ }
+ catch ( IOException e )
+ {
+ e.printStackTrace();
+ }
+ catch ( InstantiationException e )
+ {
+ e.printStackTrace();
+ }
+ catch ( IllegalAccessException e )
+ {
+ e.printStackTrace();
+ }
+ catch ( ClassNotFoundException e )
+ {
+ e.printStackTrace();
+ }
+
+ return new BaseSlf4jConfiguration();
+ }
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jLogger.java
index a2b9bca5be..fa59a1275a 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jLogger.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jLogger.java
@@ -114,7 +114,7 @@ public class Slf4jLogger
}
/**
- * Warning : ignored (always return 0
).
+ * Warning : ignored (always return 0 == Logger.LEVEL_DEBUG
).
*/
public int getThreshold()
{
@@ -129,7 +129,7 @@ public class Slf4jLogger
}
/**
- * Warning : ignored (always return 0
).
+ * Warning : ignored (always return null
).
*/
public Logger getChildLogger( String name )
{
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java
new file mode 100644
index 0000000000..2b1d782c31
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java
@@ -0,0 +1,303 @@
+package org.apache.maven.cli.logging;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.PrintStream;
+
+import org.slf4j.Logger;
+import org.slf4j.Marker;
+
+public class Slf4jStdoutLogger
+ implements Logger
+{
+ private static final String ERROR = "[ERROR] ";
+
+ private PrintStream out = System.out;
+
+ //
+ // These are the only methods we need in our primordial logger
+ //
+ public void error( String msg )
+ {
+ out.print( ERROR );
+ out.println( msg );
+ }
+
+ public void error( String msg, Throwable t )
+ {
+ error( msg );
+
+ if ( null != t )
+ {
+ t.printStackTrace( out );
+ }
+ }
+
+ //
+ // Don't need any of this
+ //
+ public String getName()
+ {
+ return null;
+ }
+
+ public boolean isTraceEnabled()
+ {
+ return false;
+ }
+
+ public void trace( String msg )
+ {
+ }
+
+ public void trace( String format, Object arg )
+ {
+ }
+
+ public void trace( String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void trace( String format, Object... arguments )
+ {
+ }
+
+ public void trace( String msg, Throwable t )
+ {
+ }
+
+ public boolean isTraceEnabled( Marker marker )
+ {
+ return false;
+ }
+
+ public void trace( Marker marker, String msg )
+ {
+ }
+
+ public void trace( Marker marker, String format, Object arg )
+ {
+ }
+
+ public void trace( Marker marker, String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void trace( Marker marker, String format, Object... argArray )
+ {
+ }
+
+ public void trace( Marker marker, String msg, Throwable t )
+ {
+ }
+
+ public boolean isDebugEnabled()
+ {
+ return false;
+ }
+
+ public void debug( String msg )
+ {
+ }
+
+ public void debug( String format, Object arg )
+ {
+ }
+
+ public void debug( String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void debug( String format, Object... arguments )
+ {
+ }
+
+ public void debug( String msg, Throwable t )
+ {
+ }
+
+ public boolean isDebugEnabled( Marker marker )
+ {
+ return false;
+ }
+
+ public void debug( Marker marker, String msg )
+ {
+ }
+
+ public void debug( Marker marker, String format, Object arg )
+ {
+ }
+
+ public void debug( Marker marker, String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void debug( Marker marker, String format, Object... arguments )
+ {
+ }
+
+ public void debug( Marker marker, String msg, Throwable t )
+ {
+ }
+
+ public boolean isInfoEnabled()
+ {
+ return false;
+ }
+
+ public void info( String msg )
+ {
+ }
+
+ public void info( String format, Object arg )
+ {
+ }
+
+ public void info( String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void info( String format, Object... arguments )
+ {
+ }
+
+ public void info( String msg, Throwable t )
+ {
+ }
+
+ public boolean isInfoEnabled( Marker marker )
+ {
+ return false;
+ }
+
+ public void info( Marker marker, String msg )
+ {
+ }
+
+ public void info( Marker marker, String format, Object arg )
+ {
+ }
+
+ public void info( Marker marker, String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void info( Marker marker, String format, Object... arguments )
+ {
+ }
+
+ public void info( Marker marker, String msg, Throwable t )
+ {
+ }
+
+ public boolean isWarnEnabled()
+ {
+ return false;
+ }
+
+ public void warn( String msg )
+ {
+ }
+
+ public void warn( String format, Object arg )
+ {
+ }
+
+ public void warn( String format, Object... arguments )
+ {
+ }
+
+ public void warn( String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void warn( String msg, Throwable t )
+ {
+ }
+
+ public boolean isWarnEnabled( Marker marker )
+ {
+ return false;
+ }
+
+ public void warn( Marker marker, String msg )
+ {
+ }
+
+ public void warn( Marker marker, String format, Object arg )
+ {
+ }
+
+ public void warn( Marker marker, String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void warn( Marker marker, String format, Object... arguments )
+ {
+ }
+
+ public void warn( Marker marker, String msg, Throwable t )
+ {
+ }
+
+ public boolean isErrorEnabled()
+ {
+ return false;
+ }
+
+ public void error( String format, Object arg )
+ {
+ }
+
+ public void error( String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void error( String format, Object... arguments )
+ {
+ }
+
+ public boolean isErrorEnabled( Marker marker )
+ {
+ return false;
+ }
+
+ public void error( Marker marker, String msg )
+ {
+ }
+
+ public void error( Marker marker, String format, Object arg )
+ {
+ }
+
+ public void error( Marker marker, String format, Object arg1, Object arg2 )
+ {
+ }
+
+ public void error( Marker marker, String format, Object... arguments )
+ {
+ }
+
+ public void error( Marker marker, String msg, Throwable t )
+ {
+ }
+
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java
new file mode 100644
index 0000000000..9cec3ccb80
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Log4j2Configuration.java
@@ -0,0 +1,58 @@
+package org.apache.maven.cli.logging.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.cli.logging.BaseSlf4jConfiguration;
+
+/**
+ * Configuration for slf4j-log4j2.
+ *
+ * @author Hervé Boutemy
+ */
+public class Log4j2Configuration
+ extends BaseSlf4jConfiguration
+{
+ @Override
+ public void setRootLoggerLevel( Level level )
+ {
+ String value = "info";
+ switch ( level )
+ {
+ case DEBUG:
+ value = "debug";
+ break;
+
+ case INFO:
+ value = "info";
+ break;
+
+ case ERROR:
+ value = "error";
+ break;
+ }
+ System.setProperty( "maven.logging.root.level", value );
+ }
+
+ @Override
+ public void activate()
+ {
+ // no op
+ }
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
new file mode 100644
index 0000000000..b72940a3a7
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
@@ -0,0 +1,60 @@
+package org.apache.maven.cli.logging.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.cli.logging.BaseSlf4jConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Configuration for slf4j-logback.
+ *
+ * @author Hervé Boutemy
+ */
+public class LogbackConfiguration
+ extends BaseSlf4jConfiguration
+{
+ @Override
+ public void setRootLoggerLevel( Level level )
+ {
+ ch.qos.logback.classic.Level value = ch.qos.logback.classic.Level.INFO;
+ switch ( level )
+ {
+ case DEBUG:
+ value = ch.qos.logback.classic.Level.DEBUG;
+ break;
+
+ case INFO:
+ value = ch.qos.logback.classic.Level.INFO;
+ break;
+
+ case ERROR:
+ value = ch.qos.logback.classic.Level.ERROR;
+ break;
+ }
+ ( (ch.qos.logback.classic.Logger) LoggerFactory.getLogger( Logger.ROOT_LOGGER_NAME ) ).setLevel( value );
+ }
+
+ @Override
+ public void activate()
+ {
+ // no op
+ }
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java
new file mode 100644
index 0000000000..6a7f38518e
--- /dev/null
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/Slf4jSimpleConfiguration.java
@@ -0,0 +1,62 @@
+package org.apache.maven.cli.logging.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.cli.logging.BaseSlf4jConfiguration;
+import org.slf4j.MavenSlf4jFriend;
+import org.slf4j.impl.MavenSlf4jSimpleFriend;
+
+/**
+ * Configuration for slf4j-simple.
+ *
+ * @author Hervé Boutemy
+ */
+public class Slf4jSimpleConfiguration
+ extends BaseSlf4jConfiguration
+{
+ @Override
+ public void setRootLoggerLevel( Level level )
+ {
+ String value = "info";
+ switch ( level )
+ {
+ case DEBUG:
+ value = "debug";
+ break;
+
+ case INFO:
+ value = "info";
+ break;
+
+ case ERROR:
+ value = "error";
+ break;
+ }
+ System.setProperty( "org.slf4j.simpleLogger.defaultLogLevel", value );
+ }
+
+ @Override
+ public void activate()
+ {
+ // property for root logger level or System.out redirection need to be taken into account
+ MavenSlf4jFriend.reset();
+ MavenSlf4jSimpleFriend.init();
+ }
+}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/transfer/Slf4jMavenTransferListener.java b/maven-embedder/src/main/java/org/apache/maven/cli/transfer/Slf4jMavenTransferListener.java
index 27ff90d464..f09c768959 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/transfer/Slf4jMavenTransferListener.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/transfer/Slf4jMavenTransferListener.java
@@ -24,6 +24,7 @@ import java.text.DecimalFormatSymbols;
import java.util.Locale;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.sonatype.aether.transfer.AbstractTransferListener;
import org.sonatype.aether.transfer.TransferCancelledException;
import org.sonatype.aether.transfer.TransferEvent;
@@ -33,8 +34,14 @@ public class Slf4jMavenTransferListener
extends AbstractTransferListener
{
- protected Logger out;
+ protected final Logger out;
+ public Slf4jMavenTransferListener()
+ {
+ this.out = LoggerFactory.getLogger( Slf4jMavenTransferListener.class );
+ }
+
+ // TODO should we deprecate?
public Slf4jMavenTransferListener( Logger out )
{
this.out = out;
diff --git a/maven-embedder/src/main/java/org/slf4j/MavenSlf4jFriend.java b/maven-embedder/src/main/java/org/slf4j/MavenSlf4jFriend.java
new file mode 100644
index 0000000000..8a43053708
--- /dev/null
+++ b/maven-embedder/src/main/java/org/slf4j/MavenSlf4jFriend.java
@@ -0,0 +1,35 @@
+package org.slf4j;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Utility for Maven to access Slf4j internals through package access.
+ * Use with precaution, since this is not normally intended for production use.
+ */
+public class MavenSlf4jFriend
+{
+ /**
+ * Reset Slf4j internal state.
+ */
+ public static void reset()
+ {
+ LoggerFactory.reset();
+ }
+}
diff --git a/maven-embedder/src/main/java/org/slf4j/impl/MavenSlf4jSimpleFriend.java b/maven-embedder/src/main/java/org/slf4j/impl/MavenSlf4jSimpleFriend.java
new file mode 100644
index 0000000000..097ad68879
--- /dev/null
+++ b/maven-embedder/src/main/java/org/slf4j/impl/MavenSlf4jSimpleFriend.java
@@ -0,0 +1,32 @@
+package org.slf4j.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Utility for Maven to access Slf4j-Simple internals through package access.
+ * Use with precaution, since this is not normally intended for production use.
+ */
+public class MavenSlf4jSimpleFriend
+{
+ public static void init()
+ {
+ SimpleLogger.init();
+ }
+}
diff --git a/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties b/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
new file mode 100644
index 0000000000..5a6a12f765
--- /dev/null
+++ b/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
@@ -0,0 +1,5 @@
+# key = Slf4j effective logger factory implementation
+# value = corresponding o.a.m.cli.logging.Slf4jConfiguration class
+org.slf4j.impl.SimpleLoggerFactory org.apache.maven.cli.logging.impl.Slf4jSimpleConfiguration
+org.slf4j.helpers.Log4JLoggerFactory org.apache.maven.cli.logging.impl.Log4j2Configuration
+ch.qos.logback.classic.LoggerContext org.apache.maven.cli.logging.impl.LogbackConfiguration
diff --git a/maven-embedder/src/site/apt/logging.apt b/maven-embedder/src/site/apt/logging.apt
index 22fa1ac25a..bdab9b2d57 100644
--- a/maven-embedder/src/site/apt/logging.apt
+++ b/maven-embedder/src/site/apt/logging.apt
@@ -22,7 +22,7 @@ Maven Logging
* Getting Logger Instance
- Plexus Logger can be injected in Plexus component using Plexus annotations
+ Plexus Logger and LoggerManager can be injected in Plexus component using Plexus annotations
<<<<<<< HEAD
+------
@@ -39,6 +39,9 @@ public class DefaultMyComponent
{
@Requirement
private Logger logger;
+
+ @Requirement
+ private LoggerManager loggerManager;
}
<<<<<<< HEAD
+------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index e075f7b0e6..25d9eab957 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -278,6 +278,8 @@ public class DefaultModelBuilder
modelNormalizer.mergeDuplicates( tmpModel, request, problems );
+ profileActivationContext.setProjectProperties( tmpModel.getProperties() );
+
List activePomProfiles =
profileSelector.getActiveProfiles( rawModel.getProfiles(), profileActivationContext, problems );
currentData.setActiveProfiles( activePomProfiles );
@@ -317,7 +319,7 @@ public class DefaultModelBuilder
}
message += currentData.getId();
- problems.add( new ModelProblemCollectorRequest(ModelProblem.Severity.FATAL, ModelProblem.Version.BASE).setMessage(message));
+ problems.add( new ModelProblemCollectorRequest( ModelProblem.Severity.FATAL, ModelProblem.Version.BASE ).setMessage( message ) );
throw problems.newModelBuildingException();
}
}
@@ -409,7 +411,7 @@ public class DefaultModelBuilder
modelValidator.validateEffectiveModel( resultModel, request, problems );
- if ( hasModelErrors(problems) )
+ if ( hasModelErrors( problems ) )
{
throw problems.newModelBuildingException();
}
@@ -471,15 +473,15 @@ public class DefaultModelBuilder
if ( pomFile != null )
{
- problems.add( new ModelProblemCollectorRequest(Severity.ERROR, Version.V20)
- .setMessage("Malformed POM " + modelSource.getLocation() + ": " + e.getMessage())
- .setException(e ));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.V20 )
+ .setMessage( "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage() )
+ .setException( e ) );
}
else
{
- problems.add( new ModelProblemCollectorRequest(Severity.WARNING, Version.V20)
- .setMessage("Malformed POM " + modelSource.getLocation() + ": " + e.getMessage())
- .setException(e));
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V20 )
+ .setMessage( "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage() )
+ .setException( e ) );
}
}
@@ -491,9 +493,9 @@ public class DefaultModelBuilder
}
catch ( ModelParseException e )
{
- problems.add( new ModelProblemCollectorRequest(Severity.FATAL, Version.BASE)
- .setMessage("Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage())
- .setException(e));
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.BASE )
+ .setMessage( "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage() )
+ .setException( e ) );
throw problems.newModelBuildingException();
}
catch ( IOException e )
@@ -511,9 +513,9 @@ public class DefaultModelBuilder
msg = e.getClass().getSimpleName();
}
}
- problems.add( new ModelProblemCollectorRequest(Severity.FATAL, Version.BASE)
- .setMessage("Non-readable POM " + modelSource.getLocation() + ": " + msg)
- .setException(e ));
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.BASE )
+ .setMessage( "Non-readable POM " + modelSource.getLocation() + ": " + msg )
+ .setException( e ) );
throw problems.newModelBuildingException();
}
@@ -522,7 +524,7 @@ public class DefaultModelBuilder
problems.setSource( model );
modelValidator.validateRawModel( model, request, problems );
- if ( hasFatalErrors(problems) )
+ if ( hasFatalErrors( problems ) )
{
throw problems.newModelBuildingException();
}
@@ -562,10 +564,10 @@ public class DefaultModelBuilder
}
catch ( InvalidRepositoryException e )
{
- problems.add( new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE)
- .setMessage( "Invalid repository " + repository.getId() + ": " + e.getMessage())
- .setLocation(repository.getLocation( "" ))
- .setException(e) );
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "Invalid repository " + repository.getId() + ": " + e.getMessage() )
+ .setLocation( repository.getLocation( "" ) )
+ .setException( e ) );
}
}
}
@@ -617,9 +619,9 @@ public class DefaultModelBuilder
if ( versions.get( key ) == null && managedVersions.get( key ) == null )
{
InputLocation location = plugins.get( key ).getLocation( "" );
- problems.add( new ModelProblemCollectorRequest(Severity.WARNING, Version.V20)
- .setMessage( "'build.plugins.plugin.version' for " + key + " is missing.")
- .setLocation(location));
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V20 )
+ .setMessage( "'build.plugins.plugin.version' for " + key + " is missing." )
+ .setLocation( location ) );
}
}
}
@@ -694,10 +696,10 @@ public class DefaultModelBuilder
if ( !"pom".equals( parentModel.getPackaging() ) )
{
- problems.add( new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE)
- .setMessage( "Invalid packaging for parent POM " + ModelProblemUtils.toSourceHint( parentModel ) + ", must be \"pom\" but is \""
- + parentModel.getPackaging() + "\"")
- .setLocation(parentModel.getLocation( "packaging" )));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "Invalid packaging for parent POM " + ModelProblemUtils.toSourceHint( parentModel )
+ + ", must be \"pom\" but is \"" + parentModel.getPackaging() + "\"" )
+ .setLocation( parentModel.getLocation( "packaging" ) ) );
}
}
else
@@ -749,9 +751,9 @@ public class DefaultModelBuilder
buffer.append( ", please verify your project structure" );
problems.setSource( childModel );
- problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.BASE)
- .setMessage( buffer.toString())
- .setLocation( parent.getLocation( "" )));
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.BASE )
+ .setMessage( buffer.toString() )
+ .setLocation( parent.getLocation( "" ) ) );
return null;
}
if ( version == null || !version.equals( parent.getVersion() ) )
@@ -843,10 +845,10 @@ public class DefaultModelBuilder
}
}
- problems.add( new ModelProblemCollectorRequest(Severity.FATAL, Version.BASE)
- .setMessage( buffer.toString())
- .setLocation(parent.getLocation( "" ))
- .setException(e));
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.BASE )
+ .setMessage( buffer.toString() )
+ .setLocation( parent.getLocation( "" ) )
+ .setException( e ) );
throw problems.newModelBuildingException();
}
@@ -912,23 +914,26 @@ public class DefaultModelBuilder
if ( groupId == null || groupId.length() <= 0 )
{
- problems.add( new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE)
- .setMessage( "'dependencyManagement.dependencies.dependency.groupId' for " + dependency.getManagementKey() + " is missing.")
- .setLocation( dependency.getLocation( "" )));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "'dependencyManagement.dependencies.dependency.groupId' for "
+ + dependency.getManagementKey() + " is missing." )
+ .setLocation( dependency.getLocation( "" ) ) );
continue;
}
if ( artifactId == null || artifactId.length() <= 0 )
{
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
- .setMessage( "'dependencyManagement.dependencies.dependency.artifactId' for " + dependency.getManagementKey() + " is missing.")
- .setLocation( dependency.getLocation( "" )));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "'dependencyManagement.dependencies.dependency.artifactId' for "
+ + dependency.getManagementKey() + " is missing." )
+ .setLocation( dependency.getLocation( "" ) ) );
continue;
}
if ( version == null || version.length() <= 0 )
{
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
- .setMessage( "'dependencyManagement.dependencies.dependency.version' for " + dependency.getManagementKey() + " is missing.")
- .setLocation( dependency.getLocation( "" )));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "'dependencyManagement.dependencies.dependency.version' for "
+ + dependency.getManagementKey() + " is missing." )
+ .setLocation( dependency.getLocation( "" ) ) );
continue;
}
@@ -942,7 +947,7 @@ public class DefaultModelBuilder
message += modelId + " -> ";
}
message += imported;
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).setMessage( message ));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).setMessage( message ) );
continue;
}
@@ -976,8 +981,8 @@ public class DefaultModelBuilder
problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( buffer.toString() )
- .setLocation( dependency.getLocation( "" ))
- .setException( e ));
+ .setLocation( dependency.getLocation( "" ) )
+ .setException( e ) );
continue;
}
@@ -1076,24 +1081,31 @@ public class DefaultModelBuilder
&& ( version == null || message.contains( version ) );
}
- protected boolean hasModelErrors(ModelProblemCollectorExt problems) {
- if (problems instanceof DefaultModelProblemCollector) {
- return ((DefaultModelProblemCollector)problems).hasErrors();
- } else {
- //the default execution path only knows the DefaultModelProblemCollector,
- // only reason it's not in signature is because it's package private
- throw new IllegalStateException();
+ protected boolean hasModelErrors( ModelProblemCollectorExt problems )
+ {
+ if ( problems instanceof DefaultModelProblemCollector )
+ {
+ return ( (DefaultModelProblemCollector) problems ).hasErrors();
+ }
+ else
+ {
+ // the default execution path only knows the DefaultModelProblemCollector,
+ // only reason it's not in signature is because it's package private
+ throw new IllegalStateException();
}
-
}
- protected boolean hasFatalErrors(ModelProblemCollectorExt problems) {
- if (problems instanceof DefaultModelProblemCollector) {
- return ((DefaultModelProblemCollector)problems).hasFatalErrors();
- } else {
- //the default execution path only knows the DefaultModelProblemCollector,
+ protected boolean hasFatalErrors( ModelProblemCollectorExt problems )
+ {
+ if ( problems instanceof DefaultModelProblemCollector )
+ {
+ return ( (DefaultModelProblemCollector) problems ).hasFatalErrors();
+ }
+ else
+ {
+ // the default execution path only knows the DefaultModelProblemCollector,
// only reason it's not in signature is because it's package private
- throw new IllegalStateException();
+ throw new IllegalStateException();
}
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
index e0effac17f..0d68aaeb5d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
@@ -146,7 +146,8 @@ public class DefaultModelProblem
return severity;
}
- public Version getVersion() {
+ public Version getVersion()
+ {
return version;
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
index e2573eb69d..114afeb2de 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
@@ -23,10 +23,7 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Set;
-import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Model;
-import org.apache.maven.model.building.ModelProblem.Severity;
-import org.apache.maven.model.building.ModelProblem.Version;
import org.apache.maven.model.io.ModelParseException;
/**
@@ -174,7 +171,9 @@ class DefaultModelProblemCollector
column = e.getColumnNumber();
}
- ModelProblem problem = new DefaultModelProblem( req.getMessage(), req.getSeverity(), req.getVersion(), source, line, column, modelId, req.getException() );
+ ModelProblem problem =
+ new DefaultModelProblem( req.getMessage(), req.getSeverity(), req.getVersion(), source, line, column,
+ modelId, req.getException() );
add( problem );
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
index 811f2e0a16..555f033c92 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
@@ -41,7 +41,8 @@ public interface ModelProblem
}
- enum Version {
+ enum Version
+ {
//based on ModeBuildingResult.validationLevel
BASE,
V20,
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
index b2321037fc..961d40abdf 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
@@ -19,9 +19,6 @@ package org.apache.maven.model.building;
* under the License.
*/
-import java.util.List;
-import org.apache.maven.model.InputLocation;
-
/**
* Collects problems that are encountered during model building. The primary purpose of this component is to account for
* the fact that the problem reporter has/should not have information about the calling context and hence cannot provide
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
index d91c5c2ed5..60bfdde207 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
@@ -1,20 +1,24 @@
-/*
- * Copyright 2012 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
package org.apache.maven.model.building;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.building.ModelProblem.Version;
@@ -38,17 +42,17 @@ public final class ModelProblemCollectorRequest
* @param severity
* @param version
*/
- public ModelProblemCollectorRequest(Severity severity, Version version)
+ public ModelProblemCollectorRequest( Severity severity, Version version )
{
this.severity = severity;
this.version = version;
- if (severity == null)
+ if ( severity == null )
{
- throw new IllegalStateException("No severity declared");
+ throw new IllegalStateException( "No severity declared" );
}
- if (version == null)
+ if ( version == null )
{
- throw new IllegalStateException("No version declared.");
+ throw new IllegalStateException( "No version declared." );
}
}
@@ -67,7 +71,7 @@ public final class ModelProblemCollectorRequest
return exception;
}
- public ModelProblemCollectorRequest setException(Exception exception)
+ public ModelProblemCollectorRequest setException( Exception exception )
{
this.exception = exception;
return this;
@@ -78,7 +82,7 @@ public final class ModelProblemCollectorRequest
return message;
}
- public ModelProblemCollectorRequest setMessage(String message)
+ public ModelProblemCollectorRequest setMessage( String message )
{
this.message = message;
return this;
@@ -89,7 +93,7 @@ public final class ModelProblemCollectorRequest
return location;
}
- public ModelProblemCollectorRequest setLocation(InputLocation location)
+ public ModelProblemCollectorRequest setLocation( InputLocation location )
{
this.location = location;
return this;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
index a66be04dea..01ff9d71a6 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
@@ -58,12 +58,17 @@ public class DefaultInheritanceAssembler
/**
* Calculates the relative path from the base directory of the parent to the parent directory of the base directory
- * of the child. The general idea is to adjust inherited URLs to match the project layout (in SCM). This calculation
- * is only a heuristic based on our conventions. In detail, the algo relies on the following assumptions. The parent
- * uses aggregation and refers to the child via the modules section. The module path to the child is considered to
- * point at the POM rather than its base directory if the path ends with ".xml" (ignoring case). The name of the
- * child's base directory matches the artifact id of the child. Note that for the sake of independence from the user
- * environment, the filesystem is intentionally not used for the calculation.
+ * of the child. The general idea is to adjust inherited URLs to match the project layout (in SCM).
+ *
+ * This calculation is only a heuristic based on our conventions.
+ * In detail, the algo relies on the following assumptions:
+ * The parent uses aggregation and refers to the child via the modules section
+ * The module path to the child is considered to
+ * point at the POM rather than its base directory if the path ends with ".xml" (ignoring case)
+ * The name of the child's base directory matches the artifact id of the child.
+ *
+ * Note that for the sake of independence from the user
+ * environment, the filesystem is intentionally not used for the calculation.
*
* @param child The child model, must not be null
.
* @param parent The parent model, may be null
.
@@ -119,7 +124,7 @@ public class DefaultInheritanceAssembler
return adjustment;
}
- private static class InheritanceModelMerger
+ protected static class InheritanceModelMerger
extends MavenModelMerger
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
index dc8b41b6ad..57e11c3c21 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
@@ -45,7 +45,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
-import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProblem.Version;
import org.apache.maven.model.building.ModelProblemCollectorRequest;
@@ -244,7 +243,8 @@ public abstract class AbstractStringBasedModelInterpolator
}
catch ( InterpolationException e )
{
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).setMessage( e.getMessage() ).setException( e ));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( e.getMessage() ).setException( e ) );
}
interpolator.clearFeedback();
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
index 106414eaf5..8167baf7ec 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
@@ -20,7 +20,6 @@ package org.apache.maven.model.interpolation;
*/
import java.util.List;
-import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProblemCollector;
import org.apache.maven.model.building.ModelProblem.Severity;
@@ -65,7 +64,7 @@ class ProblemDetectingValueSource
{
msg += " Please use ${" + newPrefix + expression.substring( bannedPrefix.length() ) + "} instead.";
}
- problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V20 ).setMessage( msg ));
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V20 ).setMessage( msg ) );
}
return value;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
index d4bc534618..2ef7eb1333 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
@@ -49,7 +49,7 @@ public class StringSearchModelInterpolator
extends AbstractStringBasedModelInterpolator
{
- private static final Map, InterpolateObjectAction.CacheItem> cachedEntries =
+ private static final Map, InterpolateObjectAction.CacheItem> CACHED_ENTRIES =
new ConcurrentHashMap, InterpolateObjectAction.CacheItem>( 80, 0.75f, 2 );
// Empirical data from 3.x, actual =40
@@ -161,11 +161,11 @@ public class StringSearchModelInterpolator
private CacheItem getCacheEntry( Class> cls )
{
- CacheItem cacheItem = cachedEntries.get( cls );
+ CacheItem cacheItem = CACHED_ENTRIES.get( cls );
if ( cacheItem == null )
{
cacheItem = new CacheItem( cls );
- cachedEntries.put( cls, cacheItem );
+ CACHED_ENTRIES.put( cls, cacheItem );
}
return cacheItem;
}
@@ -247,7 +247,7 @@ public class StringSearchModelInterpolator
}
else if ( Collection.class.isAssignableFrom( type ) )
{
- throw new RuntimeException("We dont interpolate into collections, use a list instead");
+ throw new RuntimeException( "We dont interpolate into collections, use a list instead" );
}
else if ( Map.class.isAssignableFrom( type ) )
{
@@ -278,7 +278,7 @@ public class StringSearchModelInterpolator
}
}
- static abstract class CacheField
+ abstract static class CacheField
{
protected final Field field;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
index fbfd4b8132..a13dcca6c5 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
@@ -50,7 +50,7 @@ public class DefaultDependencyManagementInjector
merger.mergeManagedDependencies( model );
}
- private static class ManagementModelMerger
+ protected static class ManagementModelMerger
extends MavenModelMerger
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
index 1d5809d9a7..ba9f060aeb 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
@@ -53,7 +53,7 @@ public class DefaultPluginManagementInjector
merger.mergeManagedBuildPlugins( model );
}
- private static class ManagementModelMerger
+ protected static class ManagementModelMerger
extends MavenModelMerger
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java b/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
index 92c0ee6a94..568bbcb2a0 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
@@ -52,7 +52,8 @@ import org.apache.maven.model.Scm;
import org.apache.maven.model.Site;
/**
- * The domain-specific model merger for the Maven POM.
+ * The domain-specific model merger for the Maven POM, overriding generic code from parent class when necessary with
+ * more adapted algorithms.
*
* @author Benjamin Bentmann
*/
@@ -631,45 +632,45 @@ public class MavenModelMerger
}
@Override
- protected Object getPluginKey( Plugin object )
+ protected Object getPluginKey( Plugin plugin )
{
- return object.getKey();
+ return plugin.getKey();
}
@Override
- protected Object getPluginExecutionKey( PluginExecution object )
+ protected Object getPluginExecutionKey( PluginExecution pluginExecution )
{
- return object.getId();
+ return pluginExecution.getId();
}
@Override
- protected Object getReportPluginKey( ReportPlugin object )
+ protected Object getReportPluginKey( ReportPlugin reportPlugin )
{
- return object.getKey();
+ return reportPlugin.getKey();
}
@Override
- protected Object getReportSetKey( ReportSet object )
+ protected Object getReportSetKey( ReportSet reportSet )
{
- return object.getId();
+ return reportSet.getId();
}
@Override
- protected Object getRepositoryBaseKey( RepositoryBase object )
+ protected Object getRepositoryBaseKey( RepositoryBase repositoryBase )
{
- return object.getId();
+ return repositoryBase.getId();
}
@Override
- protected Object getExtensionKey( Extension object )
+ protected Object getExtensionKey( Extension extension )
{
- return object.getGroupId() + ':' + object.getArtifactId();
+ return extension.getGroupId() + ':' + extension.getArtifactId();
}
@Override
- protected Object getExclusionKey( Exclusion object )
+ protected Object getExclusionKey( Exclusion exclusion )
{
- return object.getGroupId() + ':' + object.getArtifactId();
+ return exclusion.getGroupId() + ':' + exclusion.getArtifactId();
}
private String appendPath( String parentPath, Map context )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java b/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
index df7ae5b2ca..9163286a85 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
@@ -93,7 +93,7 @@ public class DefaultModelNormalizer
}
}
- private static class DuplicateMerger
+ protected static class DuplicateMerger
extends MavenModelMerger
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
index 6a95b97cf3..f8a2a93ba9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
@@ -108,9 +108,9 @@ public class DefaultReportingConverter
&& request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 )
{
- problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V31)
- .setMessage( "The section is deprecated, please move the reports to the section of the new Maven Site Plugin.")
- .setLocation( reporting.getLocation( "" ) ));
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V31 )
+ .setMessage( "The section is deprecated, please move the reports to the section of the new Maven Site Plugin." )
+ .setLocation( reporting.getLocation( "" ) ) );
}
for ( ReportPlugin plugin : reporting.getPlugins() )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileActivationContext.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileActivationContext.java
index 7258b8ba2f..5bd1c58383 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileActivationContext.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileActivationContext.java
@@ -21,13 +21,15 @@ package org.apache.maven.model.profile;
import java.io.File;
import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* Describes the environmental context used to determine the activation status of profiles.
- *
+ *
* @author Benjamin Bentmann
*/
public class DefaultProfileActivationContext
@@ -42,6 +44,8 @@ public class DefaultProfileActivationContext
private Map userProperties = Collections.emptyMap();
+ private Map projectProperties = Collections.emptyMap();
+
private File projectDirectory;
public List getActiveProfileIds()
@@ -51,7 +55,7 @@ public class DefaultProfileActivationContext
/**
* Sets the identifiers of those profiles that should be activated by explicit demand.
- *
+ *
* @param activeProfileIds The identifiers of those profiles to activate, may be {@code null}.
* @return This context, never {@code null}.
*/
@@ -76,7 +80,7 @@ public class DefaultProfileActivationContext
/**
* Sets the identifiers of those profiles that should be deactivated by explicit demand.
- *
+ *
* @param inactiveProfileIds The identifiers of those profiles to deactivate, may be {@code null}.
* @return This context, never {@code null}.
*/
@@ -102,11 +106,11 @@ public class DefaultProfileActivationContext
/**
* Sets the system properties to use for interpolation and profile activation. The system properties are collected
* from the runtime environment like {@link System#getProperties()} and environment variables.
- *
+ *
* @param systemProperties The system properties, may be {@code null}.
* @return This context, never {@code null}.
*/
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
public DefaultProfileActivationContext setSystemProperties( Properties systemProperties )
{
if ( systemProperties != null )
@@ -124,7 +128,7 @@ public class DefaultProfileActivationContext
/**
* Sets the system properties to use for interpolation and profile activation. The system properties are collected
* from the runtime environment like {@link System#getProperties()} and environment variables.
- *
+ *
* @param systemProperties The system properties, may be {@code null}.
* @return This context, never {@code null}.
*/
@@ -151,11 +155,11 @@ public class DefaultProfileActivationContext
* Sets the user properties to use for interpolation and profile activation. The user properties have been
* configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
* line.
- *
+ *
* @param userProperties The user properties, may be {@code null}.
* @return This context, never {@code null}.
*/
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
public DefaultProfileActivationContext setUserProperties( Properties userProperties )
{
if ( userProperties != null )
@@ -174,7 +178,7 @@ public class DefaultProfileActivationContext
* Sets the user properties to use for interpolation and profile activation. The user properties have been
* configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
* line.
- *
+ *
* @param userProperties The user properties, may be {@code null}.
* @return This context, never {@code null}.
*/
@@ -199,9 +203,9 @@ public class DefaultProfileActivationContext
/**
* Sets the base directory of the current project.
- *
+ *
* @param projectDirectory The base directory of the current project, may be {@code null} if profile activation
- * happens in the context of metadata retrieval rather than project building.
+ * happens in the context of metadata retrieval rather than project building.
* @return This context, never {@code null}.
*/
public DefaultProfileActivationContext setProjectDirectory( File projectDirectory )
@@ -211,4 +215,39 @@ public class DefaultProfileActivationContext
return this;
}
+ public Map getProjectProperties()
+ {
+ return projectProperties;
+ }
+
+ public DefaultProfileActivationContext setProjectProperties( Properties projectProperties )
+ {
+ if ( projectProperties != null )
+ {
+
+ this.projectProperties = Collections.unmodifiableMap( toMap( projectProperties ) );
+ }
+ else
+ {
+ this.projectProperties = Collections.emptyMap();
+ }
+
+ return this;
+ }
+
+ private Map toMap( Properties properties )
+ {
+ if ( properties == null )
+ {
+ return Collections.emptyMap();
+ }
+ Map map = new HashMap();
+ Enumeration keys = properties.keys();
+ while ( keys.hasMoreElements() )
+ {
+ String key = (String) keys.nextElement();
+ map.put( key, properties.getProperty( key ) );
+ }
+ return map;
+ }
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
index b7c8b1985f..38421bc4e9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
@@ -71,7 +71,7 @@ public class DefaultProfileInjector
}
}
- private static class ProfileModelMerger
+ protected static class ProfileModelMerger
extends MavenModelMerger
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
index dc004105fb..c376c999e3 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
@@ -115,10 +115,10 @@ public class DefaultProfileSelector
}
catch ( RuntimeException e )
{
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE)
- .setMessage( "Failed to determine activation for profile " + profile.getId())
- .setLocation( profile.getLocation( "" ))
- .setException( e ));
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
+ .setMessage( "Failed to determine activation for profile " + profile.getId() )
+ .setLocation( profile.getLocation( "" ) )
+ .setException( e ) );
return false;
}
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
index 63540f23e7..fb9ea0cd89 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
@@ -69,4 +69,11 @@ public interface ProfileActivationContext
*/
File getProjectDirectory();
+ /**
+ * Gets current calculated project properties
+ *
+ * @return The project properties, never {@code null}.
+ */
+ Map getProjectProperties();
+
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
index aa35bcc120..b4ecf26177 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
@@ -118,6 +118,8 @@ public class FileProfileActivator
return false;
}
+ interpolator.addValueSource( new MapBasedValueSource( context.getProjectProperties() ) );
+
interpolator.addValueSource( new MapBasedValueSource( context.getUserProperties() ) );
interpolator.addValueSource( new MapBasedValueSource( context.getSystemProperties() ) );
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
index 7fa55378a2..62b6cfb7b5 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
@@ -65,7 +65,7 @@ public class JdkVersionProfileActivator
{
problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
.setMessage( "Failed to determine Java version for profile " + profile.getId() )
- .setLocation(activation.getLocation( "jdk" ) ) );
+ .setLocation( activation.getLocation( "jdk" ) ) );
return false;
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index ff084f7201..77219a7b04 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -62,7 +62,7 @@ public class DefaultModelValidator
implements ModelValidator
{
- private static final Pattern ID_REGEX = Pattern.compile("[A-Za-z0-9_\\-.]+");
+ private static final Pattern ID_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.]+" );
private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*";
@@ -230,8 +230,9 @@ public class DefaultModelValidator
{
if ( !"pom".equals( model.getPackaging() ) )
{
- addViolation( problems, Severity.ERROR, Version.BASE,"packaging", null, "with value '" + model.getPackaging()
- + "' is invalid. Aggregator projects " + "require 'pom' as packaging.", model );
+ addViolation( problems, Severity.ERROR, Version.BASE, "packaging", null,
+ "with value '" + model.getPackaging() + "' is invalid. Aggregator projects "
+ + "require 'pom' as packaging.", model );
}
for ( int i = 0, n = model.getModules().size(); i < n; i++ )
@@ -850,7 +851,8 @@ public class DefaultModelValidator
buffer.append( ' ' ).append( message );
- problems.add( new ModelProblemCollectorRequest( severity, version ).setMessage( buffer.toString() ).setLocation( getLocation( fieldName, tracker )));
+ problems.add( new ModelProblemCollectorRequest( severity, version )
+ .setMessage( buffer.toString() ).setLocation( getLocation( fieldName, tracker ) ) );
}
private static InputLocation getLocation( String fieldName, InputLocationTracker tracker )
diff --git a/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml b/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml
index 1e70e8a016..3501f39063 100644
--- a/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml
+++ b/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml
@@ -56,7 +56,7 @@ under the License.
${project.artifactId}-${project.version}
${project.build.directory}/test-classes
${project.basedir}/src/main/java
- src/main/scripts
+ ${project.basedir}/src/main/scripts
${project.basedir}/src/test/java
@@ -82,11 +82,11 @@ under the License.
maven-dependency-plugin
- 2.1
+ 2.5
maven-release-plugin
- 2.0
+ 2.3.2
diff --git a/maven-model-builder/src/site/apt/index.apt b/maven-model-builder/src/site/apt/index.apt
index ed3930c4d4..1943d7bded 100644
--- a/maven-model-builder/src/site/apt/index.apt
+++ b/maven-model-builder/src/site/apt/index.apt
@@ -24,23 +24,31 @@ Maven Model Builder
** profile activation (see {{{./apidocs/org/apache/maven/model/profile/activation/package-summary.html}available activators}})
- ** model normalization
+ ** model normalization: <<>> ({{{./apidocs/org/apache/maven/model/normalization/ModelNormalizer.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/model/normalization/DefaultModelNormalizer.html}source}})
** profile injection
** parent resolution until {{{./super-pom.html}super-pom}}
- ** inheritance assembly
+ ** inheritance assembly: <<>> ({{{./apidocs/org/apache/maven/model/inheritance/InheritanceAssembler.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.html}source}})
** model interpolation (see below)
- ** url normalization
+ ** url normalization: <<>> ({{{./apidocs/org/apache/maven/model/path/UrlNormalizer.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/model/path/DefaultUrlNormalizer.html}source}})
[]
* phase 2
- ** model path translation
+ ** model path translation: <<>> ({{{./apidocs/org/apache/maven/model/path/ModelPathTranslator.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/model/path/DefaultModelPathTranslator.html}source}})
** plugin management injection
@@ -56,7 +64,9 @@ Maven Model Builder
** <(optional)> plugins configuration
- ** effective model validation
+ ** effective model validation: <<>> ({{{./apidocs/org/apache/maven/model/validation/ModelValidator.html}javadoc}}),
+ with its <<>> implementation
+ ({{{./xref/org/apache/maven/model/validation/DefaultModelValidator.html}source}})
[]
@@ -78,12 +88,12 @@ Maven Model Builder
<<>> ()\
<<<*>>> () | POM content (see {{{../maven-model/maven.html}POM reference}}) | <<<$\{project.version\}>>>\
| | <<<$\{project.build.finalName\}>>>\
- | | <<<$\{project.build.artifactId\}>>>\
+ | | <<<$\{project.artifactId\}>>>\
| | <<<$\{project.build.directory\}>>> |
*----+------+------+
-| <<>>\
-<<>>\
-<<>> () | the directory containing the <<>> file | <<<$\{project.basedir\}>>> |
+| <<>>\
+<<>> ()\
+<<>> () | the directory containing the <<>> file | <<<$\{project.basedir\}>>> |
*----+------+------+
| <<>>\
<<>> () | the directory containing the <<>> file as URI | <<<$\{project.baseUri\}>>> |
diff --git a/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java b/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
index 3c9e749e90..88e866b0b2 100644
--- a/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
+++ b/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
@@ -71,7 +71,16 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
/**
* This is a hand-crafted prototype of the default model merger that should eventually be generated by Modello by a new
- * Java plugin.
+ * Java plugin. Code structure to merge source (read-only) object into the target object is:
+ * mergeClassname ( Classname target, Classname source, boolean sourceDominant,
+ * Map context )
for each model class
+ * mergeClassname _FieldName ( Classname target, Classname source, boolean
+ * sourceDominant, Map context )
for each field of each model class
+ * Object getClassname Key( Classname classname )
for each class that is used in a list
+ *
+ * Code is written like it could be generated, with default behaviour to be overridden when necessary.
+ * This is particularly the case for Object getClassname Key( Classname classname )
method,
+ * which by default return the object itself and is expected to be overridden to calculate better suited key value.
*
* @author Benjamin Bentmann
*/
@@ -2834,79 +2843,79 @@ public class ModelMerger
return dependency;
}
- protected Object getPluginKey( Plugin object )
+ protected Object getPluginKey( Plugin plugin )
{
- return object;
+ return plugin;
}
- protected Object getPluginExecutionKey( PluginExecution object )
+ protected Object getPluginExecutionKey( PluginExecution pluginExecution )
{
- return object;
+ return pluginExecution;
}
- protected Object getReportPluginKey( ReportPlugin object )
+ protected Object getReportPluginKey( ReportPlugin reportPlugin )
{
- return object;
+ return reportPlugin;
}
- protected Object getReportSetKey( ReportSet object )
+ protected Object getReportSetKey( ReportSet reportSet )
{
- return object;
+ return reportSet;
}
- protected Object getLicenseKey( License object )
+ protected Object getLicenseKey( License license )
{
- return object;
+ return license;
}
- protected Object getMailingListKey( MailingList object )
+ protected Object getMailingListKey( MailingList mailingList )
{
- return object;
+ return mailingList;
}
- protected Object getDeveloperKey( Developer object )
+ protected Object getDeveloperKey( Developer developer )
{
- return object;
+ return developer;
}
- protected Object getContributorKey( Contributor object )
+ protected Object getContributorKey( Contributor contributor )
{
- return object;
+ return contributor;
}
- protected Object getProfileKey( Profile object )
+ protected Object getProfileKey( Profile profile )
{
- return object;
+ return profile;
}
- protected Object getRepositoryKey( Repository object )
+ protected Object getRepositoryKey( Repository repository )
{
- return getRepositoryBaseKey( object );
+ return getRepositoryBaseKey( repository );
}
- protected Object getRepositoryBaseKey( RepositoryBase object )
+ protected Object getRepositoryBaseKey( RepositoryBase repositoryBase )
{
- return object;
+ return repositoryBase;
}
- protected Object getNotifierKey( Notifier object )
+ protected Object getNotifierKey( Notifier notifier )
{
- return object;
+ return notifier;
}
- protected Object getResourceKey( Resource object )
+ protected Object getResourceKey( Resource resource )
{
- return object;
+ return resource;
}
- protected Object getExtensionKey( Extension object )
+ protected Object getExtensionKey( Extension extension )
{
- return object;
+ return extension;
}
- protected Object getExclusionKey( Exclusion object )
+ protected Object getExclusionKey( Exclusion exclusion )
{
- return object;
+ return exclusion;
}
}
diff --git a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
index d73f66d5f4..8c3d9da894 100644
--- a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
+++ b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
@@ -108,7 +108,10 @@ public class MojoDescriptor
/** Specify the required dependencies in a specified scope */
private String dependencyResolutionRequired = null;
- /** The scope of (transitive) dependencies that should be collected but not resolved. */
+ /**
+ * The scope of (transitive) dependencies that should be collected but not resolved.
+ * @since 3.0-alpha-3
+ */
private String dependencyCollectionRequired;
/** By default, the Mojo needs a Maven project to be executed */
@@ -132,7 +135,10 @@ public class MojoDescriptor
/** By default, the Mojo don't need reports to run */
private boolean requiresReports = false;
- /** By default, mojos are not threadsafe */
+ /**
+ * By default, mojos are not threadsafe
+ * @since 3.0-beta-2
+ */
private boolean threadSafe = false;
/**
@@ -271,6 +277,9 @@ public class MojoDescriptor
return dependencyResolutionRequired;
}
+ /**
+ * @since 3.0-alpha-3
+ */
public void setDependencyCollectionRequired( String requiresDependencyCollection )
{
this.dependencyCollectionRequired = requiresDependencyCollection;
@@ -284,6 +293,7 @@ public class MojoDescriptor
* full dependency resolution might fail due to projects which haven't been built yet.
*
* @return The scope of (transitive) dependencies that should be collected or {@code null} if none.
+ * @since 3.0-alpha-3
*/
public String getDependencyCollectionRequired()
{
@@ -664,6 +674,7 @@ public class MojoDescriptor
/**
* @return True if the Mojo
is thread-safe and can be run safely in parallel
+ * @since 3.0-beta-2
*/
public boolean isThreadSafe()
{
@@ -672,6 +683,7 @@ public class MojoDescriptor
/**
* @param threadSafe indicates that the mojo is thread-safe and can be run safely in parallel
+ * @since 3.0-beta-2
*/
public void setThreadSafe( boolean threadSafe )
{
diff --git a/pom.xml b/pom.xml
index 3b97b69e1f..2ffd0e86ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
org.apache.maven
maven-parent
- 22
+ 23
../pom/maven/pom.xml
@@ -30,7 +30,7 @@
pom
Apache Maven
- Maven is a project development management and
+ Maven is a software build management and
comprehension tool. Based on the concept of a project object model:
builds, dependency management, documentation creation, site
publication, and distribution publication are all controlled from
@@ -38,19 +38,19 @@
number of other development tools for reporting or the build
process.
- ${siteUrl}
+ http://maven.apache.org/ref/${project.version}
2001
- 2.4
+ 2.4.2
1.2
1.2_Java1.3
3.8.2
1.5.5
- 1.14
- 3.0.9
+ 1.16
+ 3.0.10
2.3.0
- 2.3
+ 2.4
1.3
1.7
1.6
@@ -62,10 +62,7 @@
apache-maven
Maven
Apache Maven
-
- scp://people.apache.org/www/maven.apache.org/ref/${project.version}/
- http://maven.apache.org/ref/${project.version}/
-
+ ref/3-LATEST
@@ -84,9 +81,10 @@
- scm:svn:http://svn.apache.org/repos/asf/maven/maven-3/trunk
- scm:svn:https://svn.apache.org/repos/asf/maven/maven-3/trunk
- http://svn.apache.org/viewvc/maven/maven-3/trunk
+ scm:git:https://git-wip-us.apache.org/repos/asf/maven.git
+ scm:git:https://git-wip-us.apache.org/repos/asf/maven.git
+ https://git-wip-us.apache.org/repos/asf?p=maven.git
+ HEAD
jira
@@ -94,12 +92,12 @@
Jenkins
- https://builds.apache.org/job/maven-3.0.x/
+ https://builds.apache.org/job/maven-3.x/
apache.website
- ${siteDeployUrl}
+ scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}
@@ -213,7 +211,13 @@
org.slf4j
slf4j-simple
${slf4jVersion}
- runtime
+ true
+
+
+ ch.qos.logback
+ logback-classic
+ 1.0.7
+ true
@@ -392,12 +396,12 @@
org.apache.maven.plugins
maven-assembly-plugin
- 2.2-beta-5
+ 2.4
org.codehaus.mojo
buildnumber-maven-plugin
- 1.0
+ 1.2
org.apache.maven.plugins
@@ -411,6 +415,16 @@
+
+ org.apache.maven.plugins
+ maven-scm-publish-plugin
+ 1.0-beta-2
+
+ ${project.build.directory}/staging/${maven.site.path}
+ ${maven.site.cache}/${maven.site.path}
+ true
+
+
@@ -438,16 +452,6 @@
-
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
- 2.6
-
-
-
-
apache-release
@@ -472,29 +476,18 @@
reporting
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
- 2.6
-
org.apache.maven.plugins
maven-javadoc-plugin
true
+ true
http://sonatype.github.com/sonatype-aether/apidocs/
http://plexus.codehaus.org/plexus-containers/plexus-container-default/apidocs/
-
- non-aggregate
-
- javadoc
- test-javadoc
-
-
aggregate
false
@@ -509,13 +502,6 @@
maven-jxr-plugin
2.3
-
- non-aggregate
-
- jxr
- test-jxr
-
-
aggregate
false
diff --git a/src/site/site.xml b/src/site/site.xml
index 291d8ced9f..6954e93cde 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -35,7 +35,7 @@ under the License.
org.apache.maven.skins
maven-fluido-skin
- 1.3.0
+ 1.2.1