[ 
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)

Reply via email to