apache / apache/maven

[MNG-8741] Lock file erroneously picks up command-line arguments from maven

Open
#10,342 2 comments 0 reactions 0 assignees View on GitHub
bug priority:major
Dominant language
Java
Stars
5.3k
Forks
3.1k
Avg merge
20h 42m
Merged PRs (30d)
297

Description

**[Lenny Primak](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=lprimak)** opened **[MNG-8741](https://issues.apache.org/jira/browse/MNG-8741?redirect=false)** and commented

This is a new regression in the master branch. Looks like a resolver bug.

Looks like maven is picking up arguments from command line to construct a lock file, which fails.

Example Project (any maven project should work as well): https://github.com/flowlogix/base-pom

Removing spaces, quotes, or colons makes it work, so it's a combination all three that break maven.

Tried with bash, sh, zsh and even csh(!). All are broken.

Command line:

```java
mvn package -Darguments='-Dxxx.yyy="a b" -Dzzz=aaa::bbb:'
```

Update: There is a (somewhat) workaround - escaping quotes with a backslash works,

**however** this escape doesn't work on maven 3 (or anything below 4-rc-4) so it's not a good workaround.

```java
mvn package -Darguments='-Dxxx.yyy=\"a b\" -Dzzz=aaa::bbb:'
```

Error log:

```java
[ERROR] No plugin found for prefix 'b -Dzzz=aaa' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/home/flowlogix/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]
org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException: No plugin found for prefix 'b -Dzzz=aaa' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/home/flowlogix/.m2/repository), central (https://repo.maven.apache.org/maven2)]
    at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:93)
    at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:250)
    at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:188)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:114)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:90)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:91)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:310)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
    at org.apache.maven.cling.invoker.mvn.MavenInvoker.doExecute(MavenInvoker.java:461)
    at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:100)
    at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:81)
    at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:166)
    at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:136)
    at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:76)
    at org.apache.maven.cling.MavenCling.main(MavenCling.java:51)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke(Method.java:565)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
[ERROR] 

```

Error Log with real project and njord:

```java
[ERROR] Could not open file channel for 'NamedLockKey{name='file:///Users/software/.m2/repository/.locks/artifact~Inc.%20-Djar.skip-if-empty=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dmaven.install.skip=true%20-Dpayara.start.skip=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dnjord.publisher=sonatype-cp%20-Dnjord.autoPublish=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dnjord.publisher.sonatype-cp.releaseRepositoryId=flowlogix-maven-central-portal%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-DaltDeploymentRepository=flowlogix-maven-central-portal~~njord.lock', resources=[Inc. -Djar.skip-if-empty=true -Dmaven.install.skip=true -Dpayara.start.skip=true -Dnjord.publisher=sonatype-cp -Dnjord.autoPublish=true -Dnjord.publisher.sonatype-cp.releaseRepositoryId=flowlogix-maven-central-portal -DaltDeploymentRepository=flowlogix-maven-central-portal::njord]}' after 5 attempts; giving up
java.lang.IllegalStateException: Could not open file channel for 'NamedLockKey{name='file:///Users/software/.m2/repository/.locks/artifact~Inc.%20-Djar.skip-if-empty=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dmaven.install.skip=true%20-Dpayara.start.skip=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dnjord.publisher=sonatype-cp%20-Dnjord.autoPublish=true%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-Dnjord.publisher.sonatype-cp.releaseRepositoryId=flowlogix-maven-central-portal%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-DaltDeploymentRepository=flowlogix-maven-central-portal~~njord.lock', resources=[Inc. -Djar.skip-if-empty=true -Dmaven.install.skip=true -Dpayara.start.skip=true -Dnjord.publisher=sonatype-cp -Dnjord.autoPublish=true -Dnjord.publisher.sonatype-cp.releaseRepositoryId=flowlogix-maven-central-portal -DaltDeploymentRepository=flowlogix-maven-central-portal::njord]}' after 5 attempts; giving up
at org.eclipse.aether.named.providers.FileLockNamedLockFactory.lambda$createLock$1(FileLockNamedLockFactory.java:137)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1724)
at org.eclipse.aether.named.providers.FileLockNamedLockFactory.createLock(FileLockNamedLockFactory.java:111)
at org.eclipse.aether.named.support.NamedLockFactorySupport.lambda$doGetLock$0(NamedLockFactorySupport.java:101)
at org.eclipse.aether.named.support.NamedLockFactorySupport.lambda$getLockAndRefTrack$3(NamedLockFactorySupport.java:120)
at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1932)
at org.eclipse.aether.named.support.NamedLockFactorySupport.getLockAndRefTrack(NamedLockFactorySupport.java:118)
at org.eclipse.aether.named.support.NamedLockFactorySupport.doGetLock(NamedLockFactorySupport.java:101)
at org.eclipse.aether.named.support.NamedLockFactorySupport.getLock(NamedLockFactorySupport.java:94)
at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:206)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:217)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:201)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:180)
at org.apache.maven.impl.resolver.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:165)
at org.apache.maven.impl.resolver.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:105)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:207)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:113)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.lambda$getPluginDescriptor$0(DefaultMavenPluginManager.java:203)
at org.apache.maven.plugin.DefaultPluginDescriptorCache.get(DefaultPluginDescriptorCache.java:75)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:201)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:290)
at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:224)
at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:229)
at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:114)
at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:90)
at org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:91)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:310)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.doExecute(MavenInvoker.java:461)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:100)
at org.apache.maven.cling.invoker.mvn.MavenInvoker.execute(MavenInvoker.java:81)
at org.apache.maven.cling.invoker.LookupInvoker.doInvoke(LookupInvoker.java:166)
at org.apache.maven.cling.invoker.LookupInvoker.invoke(LookupInvoker.java:136)
at org.apache.maven.cling.ClingSupport.run(ClingSupport.java:76)
at org.apache.maven.cling.MavenCling.main(MavenCling.java:51)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke(Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
[ERROR]
[ERROR] Re-run Maven using the '-X' switch to enable verbose output
```

---

**Affects:** 4.0.0-rc-4

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.