[MNG-8741] Lock file erroneously picks up command-line arguments from maven
- 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
Assessment
This issue has not been assessed yet.