Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-8121

NullPointerException at org.apache.maven.artifact.repository.metadata.Metadata.merge (Metadata.java:293)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.9.6
    • 3.9.7, 4.0.0-beta-3, 4.0.0
    • None
    • Maven 3.9.6
      maven-plugin-plugin 3.13.0
      org.sonatype.plugins:nexus-staging-maven-plugin:1.6.13

    Description

      TL;DR org.apache.maven.artifact.repository.metadata.Metadata.merge (Metadata.java:293) throws NullPointerException if previous releases of a plugin did not have a goalPrefix set.
       
      At least, this is my interpretation of what is going on.
       
      Background
      -------------
       
      I have an open-source project at https://github.com/cmake-maven-project/cmake-maven-project/tree/v3.27.1-b1 with the following coordinates:
       
      <groupId>com.googlecode.cmake-maven-project</groupId>
      <artifactId>cmake</artifactId>
       

      If I upgrade "maven-plugin-plugin" from version 3.10.1 to 3.13.0 I am forced to set "<goalPrefix>" because of https://issues.apache.org/jira/browse/MPLUGIN-450 and https://github.com/apache/maven-plugin-tools/commit/ed4774bcd8b8d2d1f7ff1196cf7644054cb3ae14#diff-624cbd32cd7fc0f3f9154fbec92b8a1aebb04614360b4a0b5fc28a407e99d743L96

       

      In my particular case, I set "<goalPrefix>cmake-binaries</goalPrefix>" inside cmake-binaries-plugin/pom.xml.

      Now, when I try deploying a release to Maven Central I get the following exception stack trace:

       
       

      java.lang.NullPointerException
          at org.apache.maven.artifact.repository.metadata.Metadata.merge (Metadata.java:293)
          at org.apache.maven.artifact.repository.metadata.AbstractRepositoryMetadata.updateRepositoryMetadata (AbstractRepositoryMetadata.java:99)
          at org.apache.maven.artifact.repository.metadata.AbstractRepositoryMetadata.storeInLocalRepository (AbstractRepositoryMetadata.java:59)
          at org.apache.maven.artifact.repository.metadata.MetadataBridge.merge (MetadataBridge.java:56)
          at org.eclipse.aether.internal.impl.DefaultDeployer.upload (DefaultDeployer.java:399)
          at org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:294)
          at org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:202)
          at org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy (DefaultRepositorySystem.java:393)
          at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy (DefaultArtifactDeployer.java:131)
          at org.sonatype.nexus.maven.staging.deploy.strategy.AbstractDeployStrategy.deployUp (AbstractDeployStrategy.java:213)
          at org.sonatype.nexus.maven.staging.deploy.strategy.StagingDeployStrategy.finalizeDeploy (StagingDeployStrategy.java:125)
          at org.sonatype.nexus.maven.staging.deploy.DeployMojo.execute (DeployMojo.java:213)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)

       
      I assume that this is caused by preExisting.getPrefix() returning null, but I have no idea why this is happening. Perhaps this is caused by previous versions not have a goalPrefix set? Shouldn't the implementation handle this possibility?

      Attachments

        Issue Links

          Activity

            People

              cstamas Tamas Cservenak
              cowwoc Gili
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: