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/12/02 20:03:04 UTC

[maven-gpg-plugin] branch master updated: [MGPG-69] Drop Maven 2 support (require Maven 3)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8b1ef75  [MGPG-69] Drop Maven 2 support (require Maven 3)
8b1ef75 is described below

commit 8b1ef753e04cb7d61e280966e18560eb915b8678
Author: rfscholte <rf...@apache.org>
AuthorDate: Mon Dec 2 21:02:52 2019 +0100

    [MGPG-69] Drop Maven 2 support (require Maven 3)
---
 pom.xml                                            |  76 +++++++++++-
 .../{plugin => plugins}/gpg/AbstractGpgMojo.java   |   2 +-
 .../{plugin => plugins}/gpg/AbstractGpgSigner.java |   2 +-
 .../gpg/AscArtifactMetadata.java                   |  30 +++--
 .../gpg/AttachedSignedArtifact.java                |   9 +-
 .../gpg/GpgSignAttachedMojo.java                   |   2 +-
 .../maven/{plugin => plugins}/gpg/GpgSigner.java   |   2 +-
 .../maven/{plugin => plugins}/gpg/GpgVersion.java  |   2 +-
 .../{plugin => plugins}/gpg/GpgVersionParser.java  |   2 +-
 .../gpg/SignAndDeployFileMojo.java                 | 129 +++++++++++++--------
 .../{plugin => plugins}/gpg/SigningBundle.java     |   2 +-
 .../gpg/GpgVersionConsumerTest.java                |   4 +-
 .../{plugin => plugins}/gpg/GpgVersionTest.java    |   3 +-
 13 files changed, 187 insertions(+), 78 deletions(-)

diff --git a/pom.xml b/pom.xml
index e0a5919..7e01980 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@ under the License.
   </parent>
 
   <artifactId>maven-gpg-plugin</artifactId>
-  <version>1.7-SNAPSHOT</version>
+  <version>3.0.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Apache Maven GPG Plugin</name>
@@ -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,25 @@ under the License.
       <scope>provided</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-artifact-transfer</artifactId>
+      <version>0.12.0</version>
+    </dependency>
+    <dependency>
+      <!-- org.eclipse.aether.util.artifact.SubArtifact -->
+      <groupId>org.apache.maven.resolver</groupId>
+      <artifactId>maven-resolver-util</artifactId>
+      <version>1.4.1</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <!-- org.sonatype.aether.util.artifact.SubArtifact -->
+      <groupId>org.sonatype.aether</groupId>
+      <artifactId>aether-util</artifactId>
+      <version>1.7</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
       <version>3.1.0</version>
@@ -114,6 +138,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>
@@ -131,6 +161,42 @@ under the License.
         </plugin>
       </plugins>
     </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.2.1</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <artifactSet>
+                <includes>
+                  <include>org.apache.maven.resolver:maven-resolver-util</include>
+                  <include>org.sonatype.aether:aether-util</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>org.apache.maven.resolver:maven-resolver-util</artifact>
+                  <includes>
+                    <include>org/eclipse/aether/util/artifact/SubArtifact.class</include>
+                  </includes>
+                </filter>
+                <filter>
+                  <artifact>org.sonatype.aether:aether-util</artifact>
+                  <includes>
+                    <include>org/sonatype/aether/util/artifact/SubArtifact.class</include>
+                  </includes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
   </build>
 
   <profiles>
diff --git a/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java b/src/main/java/org/apache/maven/plugins/gpg/AbstractGpgMojo.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java
rename to src/main/java/org/apache/maven/plugins/gpg/AbstractGpgMojo.java
index 61fa02f..fdf33d5 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/AbstractGpgMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java b/src/main/java/org/apache/maven/plugins/gpg/AbstractGpgSigner.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java
rename to src/main/java/org/apache/maven/plugins/gpg/AbstractGpgSigner.java
index 68c5ba7..2de3d32 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/AbstractGpgSigner.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java b/src/main/java/org/apache/maven/plugins/gpg/AscArtifactMetadata.java
similarity index 85%
rename from src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java
rename to src/main/java/org/apache/maven/plugins/gpg/AscArtifactMetadata.java
index c4b95b5..e3cbbca 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AscArtifactMetadata.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/AscArtifactMetadata.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -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/plugins/gpg/AttachedSignedArtifact.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java
rename to src/main/java/org/apache/maven/plugins/gpg/AttachedSignedArtifact.java
index 964e16f..ff1243b 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/AttachedSignedArtifact.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/AttachedSignedArtifact.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -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/GpgSignAttachedMojo.java b/src/main/java/org/apache/maven/plugins/gpg/GpgSignAttachedMojo.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java
rename to src/main/java/org/apache/maven/plugins/gpg/GpgSignAttachedMojo.java
index b631eba..706d658 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/GpgSignAttachedMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java b/src/main/java/org/apache/maven/plugins/gpg/GpgSigner.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java
rename to src/main/java/org/apache/maven/plugins/gpg/GpgSigner.java
index a46bc2c..65dd396 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/GpgSigner.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/GpgVersion.java b/src/main/java/org/apache/maven/plugins/gpg/GpgVersion.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/gpg/GpgVersion.java
rename to src/main/java/org/apache/maven/plugins/gpg/GpgVersion.java
index b1da2cf..6e64577 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/GpgVersion.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/GpgVersion.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/GpgVersionParser.java b/src/main/java/org/apache/maven/plugins/gpg/GpgVersionParser.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/gpg/GpgVersionParser.java
rename to src/main/java/org/apache/maven/plugins/gpg/GpgVersionParser.java
index 56b3084..12adb71 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/GpgVersionParser.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/GpgVersionParser.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java b/src/main/java/org/apache/maven/plugins/gpg/SignAndDeployFileMojo.java
similarity index 85%
rename from src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java
rename to src/main/java/org/apache/maven/plugins/gpg/SignAndDeployFileMojo.java
index 9b0838e..37e747d 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/SignAndDeployFileMojo.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/SignAndDeployFileMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -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 );
+            }
+        }
+
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugin/gpg/SigningBundle.java b/src/main/java/org/apache/maven/plugins/gpg/SigningBundle.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/gpg/SigningBundle.java
rename to src/main/java/org/apache/maven/plugins/gpg/SigningBundle.java
index 97100d2..fd474b1 100644
--- a/src/main/java/org/apache/maven/plugin/gpg/SigningBundle.java
+++ b/src/main/java/org/apache/maven/plugins/gpg/SigningBundle.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/test/java/org/apache/maven/plugin/gpg/GpgVersionConsumerTest.java b/src/test/java/org/apache/maven/plugins/gpg/GpgVersionConsumerTest.java
similarity index 91%
rename from src/test/java/org/apache/maven/plugin/gpg/GpgVersionConsumerTest.java
rename to src/test/java/org/apache/maven/plugins/gpg/GpgVersionConsumerTest.java
index cae0ea1..b7b2b0f 100644
--- a/src/test/java/org/apache/maven/plugin/gpg/GpgVersionConsumerTest.java
+++ b/src/test/java/org/apache/maven/plugins/gpg/GpgVersionConsumerTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,7 +22,7 @@ package org.apache.maven.plugin.gpg;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-import org.apache.maven.plugin.gpg.GpgVersionParser.GpgVersionConsumer;
+import org.apache.maven.plugins.gpg.GpgVersionParser.GpgVersionConsumer;
 import org.junit.Test;
 
 public class GpgVersionConsumerTest
diff --git a/src/test/java/org/apache/maven/plugin/gpg/GpgVersionTest.java b/src/test/java/org/apache/maven/plugins/gpg/GpgVersionTest.java
similarity index 93%
rename from src/test/java/org/apache/maven/plugin/gpg/GpgVersionTest.java
rename to src/test/java/org/apache/maven/plugins/gpg/GpgVersionTest.java
index d7d4652..fb6bf47 100644
--- a/src/test/java/org/apache/maven/plugin/gpg/GpgVersionTest.java
+++ b/src/test/java/org/apache/maven/plugins/gpg/GpgVersionTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.gpg;
+package org.apache.maven.plugins.gpg;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,6 +21,7 @@ package org.apache.maven.plugin.gpg;
 
 import static org.junit.Assert.assertTrue;
 
+import org.apache.maven.plugins.gpg.GpgVersion;
 import org.junit.Test;
 
 public class GpgVersionTest