[ https://issues.apache.org/jira/browse/MNG-8121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17846472#comment-17846472 ]
Gili edited comment on MNG-8121 at 5/15/24 2:44 AM: ---------------------------------------------------- I just confirmed the problem by running the build through a debugger. When merge() is invoked on "cmake-binaries-plugin" the for loop returns a plugin where preExisting.getPrefix() returns null. Looking at [https://github.com/sonatype/nexus-maven-plugins/blob/43a9940b134c3f87ebe4daa82552e844d9c578b8/staging/maven-plugin/src/main/java/org/sonatype/nexus/maven/staging/deploy/strategy/AbstractDeployStrategy.java#L107] the "cmake-binaries-plugin" returns two instances of ArtifactMetadata: # ArtifactRepositoryMetadata # ProjectArtifactMetadata but because none of them is an instanceof GroupRepositoryMetadata, pluginPrefix remains equal to null. This is probably the crux of the matter. # Is the nexus plugin wrong to use GroupRepositoryMetadata to look up the plugin's prefix? Or, # Is does maven-plugin-plugin contain a regression and GroupRepositoryMetadata should be returned? I await your feedback. was (Author: cowwoc): I just confirmed the problem by running the build through a debugger. When merge() is invoked on "cmake-binaries-plugin" the for loop returns a plugin where preExisting.getPrefix() returns null. > NullPointerException at > org.apache.maven.artifact.repository.metadata.Metadata.merge > (Metadata.java:293) > -------------------------------------------------------------------------------------------------------- > > Key: MNG-8121 > URL: https://issues.apache.org/jira/browse/MNG-8121 > Project: Maven > Issue Type: Bug > Components: Artifacts and Repositories > Affects Versions: 3.9.6 > Environment: Maven 3.9.6 > maven-plugin-plugin 3.13.0 > Reporter: Gili > Priority: Major > > 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: > > > {noformat} > 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){noformat} > > 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? -- This message was sent by Atlassian Jira (v8.20.10#820010)