You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/10/25 15:14:47 UTC

[maven-gpg-plugin] branch MGPG-69 created (now bb91840)

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a change to branch MGPG-69
in repository https://gitbox.apache.org/repos/asf/maven-gpg-plugin.git.


      at bb91840  [MGPG-69] Drop Maven 2 support (require Maven 3)

This branch includes the following new commits:

     new bb91840  [MGPG-69] Drop Maven 2 support (require Maven 3)

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-gpg-plugin] 01/01: [MGPG-69] Drop Maven 2 support (require Maven 3)

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MGPG-69
in repository https://gitbox.apache.org/repos/asf/maven-gpg-plugin.git

commit bb918403caec48f1433d383c5cba90090d96b4f4
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Oct 25 17:14:36 2019 +0200

    [MGPG-69] Drop Maven 2 support (require Maven 3)
---
 pom.xml                                            |  24 +++-
 .../maven/plugin/gpg/AscArtifactMetadata.java      |  28 ++++-
 .../maven/plugin/gpg/AttachedSignedArtifact.java   |   7 --
 .../maven/plugin/gpg/SignAndDeployFileMojo.java    | 127 +++++++++++++--------
 4 files changed, 122 insertions(+), 64 deletions(-)

diff --git a/pom.xml b/pom.xml
index e0a5919..cfddea8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@ under the License.
   </distributionManagement>
 
   <properties>
-    <mavenVersion>2.2.1</mavenVersion>
+    <mavenVersion>3.0</mavenVersion>
     <javaVersion>7</javaVersion>
   </properties>
 
@@ -74,7 +74,7 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
+      <artifactId>maven-core</artifactId>
       <version>${mavenVersion}</version>
     </dependency>
     <dependency>
@@ -84,12 +84,17 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-repository-metadata</artifactId>
+      <artifactId>maven-model</artifactId>
       <version>${mavenVersion}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
+      <artifactId>maven-model-builder</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-settings</artifactId>
       <version>${mavenVersion}</version>
     </dependency>
     <dependency>
@@ -98,6 +103,11 @@ under the License.
       <scope>provided</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-artifact-transfer</artifactId>
+      <version>0.11.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
       <version>3.1.0</version>
@@ -114,6 +124,12 @@ under the License.
       <version>4.12</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <version>1.3</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java b/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java
index c4b95b5..118b58c 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java
+++ b/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java
@@ -34,12 +34,12 @@ import org.codehaus.plexus.util.FileUtils;
  *
  */
 public class AscArtifactMetadata
-    extends AbstractArtifactMetadata
+    extends AbstractArtifactMetadata implements org.apache.maven.shared.transfer.metadata.ArtifactMetadata  
 {
 
-    File file;
+    private final File file;
 
-    boolean isPom;
+    private final boolean isPom;
 
     public AscArtifactMetadata( Artifact artifact, File file, boolean isPom )
     {
@@ -97,11 +97,21 @@ public class AscArtifactMetadata
     @Override
     public void merge( ArtifactMetadata metadata )
     {
-        AscArtifactMetadata m = (AscArtifactMetadata) metadata;
-        if ( !m.file.equals( file ) )
+        merge( (AscArtifactMetadata) metadata );
+    }
+
+    @Override
+    public void merge( org.apache.maven.repository.legacy.metadata.ArtifactMetadata metadata )
+    {
+        merge( (AscArtifactMetadata) metadata );
+    }
+    
+    private void merge( AscArtifactMetadata metadata )
+    {
+        if ( !metadata.file.equals( file ) )
         {
             throw new IllegalStateException( "Cannot add two different pieces of metadata for: " + getKey() );
-        }
+        } 
     }
 
     @Override
@@ -134,4 +144,10 @@ public class AscArtifactMetadata
         return getFilename();
     }
 
+    @Override
+    public File getFile()
+    {
+        return file;
+    }
+
 }
diff --git a/src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java b/src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java
index 964e16f..072bf2a 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java
+++ b/src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java
@@ -358,11 +358,4 @@ public class AttachedSignedArtifact
     {
         return delegate.compareTo( o );
     }
-
-    @Override
-    public ArtifactMetadata getMetadata( Class<?> metadataClass )
-    {
-        // TODO Auto-generated method stub
-        return delegate.getMetadata( metadataClass );
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java b/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java
index 9b0838e..3d67fd5 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java
+++ b/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java
@@ -24,21 +24,29 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.deployer.ArtifactDeployer;
-import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.MavenArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
+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.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.model.validation.ModelValidator;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Component;
@@ -46,9 +54,10 @@ import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.maven.project.validation.ModelValidationResult;
-import org.apache.maven.project.validation.ModelValidator;
+import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer;
+import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
@@ -134,12 +143,6 @@ public class SignAndDeployFileMojo
     private boolean generatePom;
 
     /**
-     * Whether to deploy snapshots with a unique version or not.
-     */
-    @Parameter( property = "uniqueVersion", defaultValue = "true" )
-    private boolean uniqueVersion;
-
-    /**
      * URL where the artifact will be deployed. <br/>
      * ie ( file:///C:/m2-repo or scp://host.com/path/to/repo )
      */
@@ -170,24 +173,12 @@ public class SignAndDeployFileMojo
     private ArtifactRepository localRepository;
 
     /**
-     * Map that contains the layouts.
-     */
-    @Component( role = ArtifactRepositoryLayout.class )
-    private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
-
-    /**
      * Component used to create an artifact
      */
     @Component
     private ArtifactFactory artifactFactory;
 
     /**
-     * Component used to create a repository
-     */
-    @Component
-    private ArtifactRepositoryFactory repositoryFactory;
-
-    /**
      * The component used to validate the user-supplied artifact coordinates.
      */
     @Component
@@ -202,6 +193,12 @@ public class SignAndDeployFileMojo
     private MavenProject project;
 
     /**
+     * @since 3.0.0
+     */
+    @Parameter( defaultValue = "${session}", readonly = true, required = true )
+    private MavenSession session;
+
+    /**
      * Used for attaching the source and javadoc jars to the project.
      *
      * @since 1.3
@@ -304,14 +301,8 @@ public class SignAndDeployFileMojo
             throw new MojoFailureException( file.getPath() + " not found." );
         }
 
-        ArtifactRepositoryLayout layout = repositoryLayouts.get( repositoryLayout );
-        if ( layout == null )
-        {
-            throw new MojoFailureException( "Invalid repository layout: " + repositoryLayout );
-        }
-
-        ArtifactRepository deploymentRepository =
-            repositoryFactory.createDeploymentArtifactRepository( repositoryId, url, layout, uniqueVersion );
+        
+        ArtifactRepository deploymentRepository = createDeploymentArtifactRepository( repositoryId, url );
 
         if ( StringUtils.isEmpty( deploymentRepository.getProtocol() ) )
         {
@@ -325,6 +316,7 @@ public class SignAndDeployFileMojo
         {
             throw new MojoFailureException( "Cannot deploy artifact from the local repository: " + file );
         }
+        artifact.setFile( file );
 
         File fileSig = signer.generateSignatureForArtifact( file );
         ArtifactMetadata metadata = new AscArtifactMetadata( artifact, fileSig, false );
@@ -356,9 +348,9 @@ public class SignAndDeployFileMojo
 
         try
         {
-            deploy( file, artifact, deploymentRepository, localRepository );
+            deploy( artifact, deploymentRepository );
         }
-        catch ( ArtifactDeploymentException e )
+        catch ( ArtifactDeployerException e )
         {
             throw new MojoExecutionException( e.getMessage(), e );
         }
@@ -465,9 +457,9 @@ public class SignAndDeployFileMojo
             attached = new AttachedSignedArtifact( attached, new AscArtifactMetadata( attached, fileSig, false ) );
             try
             {
-                deploy( attached.getFile(), attached, deploymentRepository, localRepository );
+                deploy(  attached, deploymentRepository );
             }
-            catch ( ArtifactDeploymentException e )
+            catch ( ArtifactDeployerException e )
             {
                 throw new MojoExecutionException( "Error deploying attached artifact " + attached.getFile() + ": "
                     + e.getMessage(), e );
@@ -592,12 +584,23 @@ public class SignAndDeployFileMojo
     {
         Model model = generateModel();
 
-        ModelValidationResult result = modelValidator.validate( model );
+        ModelBuildingRequest request = new DefaultModelBuildingRequest()
+                        .setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 );
+                    
+        List<String> result = new ArrayList<>();
+
+        SimpleModelProblemCollector problemCollector = new SimpleModelProblemCollector( result );
+
+        modelValidator.validateEffectiveModel( model, request, problemCollector );
 
-        if ( result.getMessageCount() > 0 )
+        if ( !result.isEmpty() )
         {
-            throw new MojoFailureException( "The artifact information is incomplete or not valid:\n"
-                + result.render( "  " ) );
+            StringBuilder msg = new StringBuilder( "The artifact information is incomplete or not valid:\n" );
+            for ( String e : result )
+            {
+                msg.append( " - " + e + '\n' );
+            }
+            throw new MojoFailureException( msg.toString() );
         }
     }
 
@@ -631,12 +634,14 @@ public class SignAndDeployFileMojo
      * @param localRepository the local repository to install into
      * @throws ArtifactDeploymentException if an error occurred deploying the artifact
      */
-    protected void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository,
-                           ArtifactRepository localRepository )
-        throws ArtifactDeploymentException
+    protected void deploy( Artifact artifact,
+                           ArtifactRepository deploymentRepository )
+        throws ArtifactDeployerException
     {
+        final ProjectBuildingRequest buildingRequest = session.getProjectBuildingRequest();
+        
         int retryFailedDeploymentCount = Math.max( 1, Math.min( 10, this.retryFailedDeploymentCount ) );
-        ArtifactDeploymentException exception = null;
+        ArtifactDeployerException exception = null;
         for ( int count = 0; count < retryFailedDeploymentCount; count++ )
         {
             try
@@ -647,7 +652,8 @@ public class SignAndDeployFileMojo
                     getLog().info( "Retrying deployment attempt " + ( count + 1 ) + " of " + retryFailedDeploymentCount );
                     // CHECKSTYLE_ON: LineLength
                 }
-                deployer.deploy( source, artifact, deploymentRepository, localRepository );
+                deployer.deploy( buildingRequest, deploymentRepository, Collections.singletonList( artifact ) );
+
                 for ( Object o : artifact.getMetadataList() )
                 {
                     ArtifactMetadata metadata = (ArtifactMetadata) o;
@@ -656,7 +662,7 @@ public class SignAndDeployFileMojo
                 exception = null;
                 break;
             }
-            catch ( ArtifactDeploymentException e )
+            catch ( ArtifactDeployerException e )
             {
                 if ( count + 1 < retryFailedDeploymentCount )
                 {
@@ -674,4 +680,31 @@ public class SignAndDeployFileMojo
             throw exception;
         }
     }
+    
+    protected ArtifactRepository createDeploymentArtifactRepository( String id, String url )
+    {
+        return new MavenArtifactRepository( id, url, new DefaultRepositoryLayout(), new ArtifactRepositoryPolicy(),
+                                            new ArtifactRepositoryPolicy() );
+    }
+
+    private static class SimpleModelProblemCollector
+        implements ModelProblemCollector
+    {
+
+        private final List<String> result;
+
+        SimpleModelProblemCollector( List<String> result )
+        {
+            this.result = result;
+        }
+
+        public void add( Severity severity, String message, InputLocation location, Exception cause )
+        {
+            if ( !ModelProblem.Severity.WARNING.equals( severity ) )
+            {
+                result.add( message );
+            }
+        }
+
+    }
 }