apache / apache/maven-build-cache-extension

[MBUILDCACHE-102] mvn build cache extension config parsing issues on windows

Open
#329 0 comments 2 reactions 0 assignees View on GitHub
bug priority:major
Dominant language
Java
Stars
163
Forks
77
Avg merge
1d 2h
Merged PRs (30d)
4

Description

**[Scott Feldstein](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=scottmf)** opened **[MBUILDCACHE-102](https://issues.apache.org/jira/browse/MBUILDCACHE-102?redirect=false)** and commented

Hello,

My colleague is having issues on his windows development laptop building with the maven build-cache extension enabled.  The issue appears to be associated with the configuration file when parsing '`***`' in an ant path expression element (stack below).  The configuration file is based on the [config example](https://maven.apache.org/extensions/maven-build-cache-extension/maven-build-cache-config.xml) in the [getting started guide](https://maven.apache.org/extensions/maven-build-cache-extension/getting-started.html) (see below for my exact configuration).  When we remove '`src/main/javagen/***`' from the config then everything works fine.

# Stacktrace

```java
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.159 s
[INFO] Finished at: 2024-08-15T10:04:09-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to calculate checksums for cs-parent: Illegal char <*> at index 17: src\main\javagen\**
java.lang.RuntimeException: Failed to calculate checksums for cs-parent
    at org.apache.maven.buildcache.DefaultProjectInputCalculator.calculateInputInternal (DefaultProjectInputCalculator.java:114)
    at org.apache.maven.buildcache.DefaultProjectInputCalculator.calculateInput (DefaultProjectInputCalculator.java:89)
    at org.apache.maven.buildcache.CacheControllerImpl.findCachedBuild (CacheControllerImpl.java:180)
    at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute (BuildCacheMojosExecutionStrategy.java:128)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
Caused by: java.nio.file.InvalidPathException: Illegal char <*> at index 17: src\main\javagen\**
    at sun.nio.fs.WindowsPathParser.normalize (WindowsPathParser.java:182)
    at sun.nio.fs.WindowsPathParser.parse (WindowsPathParser.java:153)
    at sun.nio.fs.WindowsPathParser.parse (WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse (WindowsPath.java:92)
    at sun.nio.fs.WindowsFileSystem.getPath (WindowsFileSystem.java:232)
    at java.nio.file.Path.of (Path.java:147)
    at java.nio.file.Paths.get (Paths.java:69)
    at org.apache.maven.buildcache.checksum.exclude.Exclusion. (Exclusion.java:70)
    at org.apache.maven.buildcache.checksum.exclude.ExclusionResolver.addExclusion (ExclusionResolver.java:104)
    at org.apache.maven.buildcache.checksum.exclude.ExclusionResolver. (ExclusionResolver.java:73)
    at org.apache.maven.buildcache.checksum.MavenProjectInput. (MavenProjectInput.java:169)
    at org.apache.maven.buildcache.DefaultProjectInputCalculator.calculateInputInternal (DefaultProjectInputCalculator.java:103)
    at org.apache.maven.buildcache.DefaultProjectInputCalculator.calculateInput (DefaultProjectInputCalculator.java:89)
    at org.apache.maven.buildcache.CacheControllerImpl.findCachedBuild (CacheControllerImpl.java:180)
    at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute (BuildCacheMojosExecutionStrategy.java:128)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

```

# My Configuration

```java

       
        true
        SHA-256
        true
       
            http://host:port
       
       
            3
       
       
       
       
           
           
                {*.java,*.groovy,*.yaml,*.svcd,*.proto,*assembly.xml,assembly*.xml,*logback.xml,*.vm,*.ini,*.jks,*.properties,*.sh,*.bat}
           
           
               
               
                src/
           
           
               
               
               
                pom.xml
               
                src/main/javagen/**
           
       
       
           
               
                   
                        111
                   
               
               
                   
                       
                       
                   
                   
                       
                   
               
               
                   
                       
                            1
                            2
                       
                       
                           
                               
                           
                       
                   
               
           
       
   
   
       
           
               
           
           
               
                   
                        my-execution-id
                   
               
           
           
               
                   
                        install
                   
               
               
                   
                        deploy
                   
               
               
                   
                        deploy-local
                   
               
           
       
       
           
               
                   
                       
                       
                       
                       
                   
                   
                   
                       
                       
                       
                   
               
               
                   
                       
                       
                   
               
               
                   
                       
                   
                   
                   
                       
                       
                   
               
               
                   
                       
                       
                       
                       
                   
               
           
       
   

```

---
No further details from [MBUILDCACHE-102](https://issues.apache.org/jira/browse/MBUILDCACHE-102?redirect=false)

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the Windows failure with the configuration from the issue, especially the src/main/javagen/** exclusion. Start with Exclusion.java, then follow ExclusionResolver and MavenProjectInput from the stack trace. Done means the wildcard exclusion is handled without InvalidPathException and the Maven build-cache extension can calculate project inputs successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.