diffplug / diffplug/spotless

Eclipse formatters on 2.43.0 does not use correctly maven local repository

Offen
#2,329 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
559
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
43

Beschreibung

The `` step is not respecting `localRepository` settings in Maven: if you have a `` different than Maven default (`%USERPROFILE%/.m2/repository` on Windows or `${HOME}/.m2/repository` on Linux), it tries to create file under the default.

As a technique to avoid having files in `.m2/repository`, I had created a file in place of a directory in `.m2/repository`:

```bash
# move actual repository
mv ~/.m2/repository ~/.m2/repository_old
# create a file
touch ~/.m2/repository
```

And then changed the Maven settings.

With this in place, you can see errors because Spotless tries to create a directory `.m2/repository/dev` which can't work because `.m2/repository` point to a file (see trace below).

I am under the impression that the problem lies here:

- the `cacheDirectory`
- the `RepositorySystemSession`

I could create a NTFS junction or a symlink, but on Windows, it is rather inconvenient as I am required to be admin.

Note: to print out the local repository, you can use `./mvnw help:evaluate -Dexpression='session.localRepository.basedir' -N`

---

Settings:

```xml

E:\some\path\local
...

```

Plugin configuration:

```xml
com.diffplug.spotless spotless-maven-plugin 2.43.0








javax,java,org,com,\#



```

Error:

```text
java.nio.file.NoSuchFileException: C:\Users\someuser\.m2\repository\dev
at sun.nio.fs.WindowsException.translateToIOException (WindowsException.java:85)
at sun.nio.fs.WindowsException.rethrowAsIOException (WindowsException.java:103)
at sun.nio.fs.WindowsException.rethrowAsIOException (WindowsException.java:108)
at sun.nio.fs.WindowsFileSystemProvider.createDirectory (WindowsFileSystemProvider.java:527)
at java.nio.file.Files.createDirectory (Files.java:699)
at java.nio.file.Files.createAndCheckIsDirectory (Files.java:807)
at java.nio.file.Files.createDirectories (Files.java:793)
at dev.equo.solstice.p2.FileMisc.lambda$mkdirs$2 (FileMisc.java:84)
at dev.equo.solstice.p2.FileMisc.retry (FileMisc.java:101)
at dev.equo.solstice.p2.FileMisc.retry (FileMisc.java:93)
at dev.equo.solstice.p2.FileMisc.mkdirs (FileMisc.java:84)
at dev.equo.solstice.p2.QueryCacheOnDisk. (QueryCacheOnDisk.java:33)
at dev.equo.solstice.p2.P2Model.query (P2Model.java:129)
at com.diffplug.spotless.extra.EquoBasedStepBuilder.get (EquoBasedStepBuilder.java:114)
at com.diffplug.spotless.FormatterStepImpl.calculateState (FormatterStepImpl.java:58)
at com.diffplug.spotless.LazyForwardingEquality.state (LazyForwardingEquality.java:56)
at com.diffplug.spotless.LazyForwardingEquality.toBytes (LazyForwardingEquality.java:85)
at com.diffplug.spotless.LazyForwardingEquality.hashCode (LazyForwardingEquality.java:102)
at java.util.ArrayList.hashCodeRange (ArrayList.java:677)
at java.util.ArrayList.hashCode (ArrayList.java:664)
at com.diffplug.spotless.Formatter.hashCode (Formatter.java:276)
at java.util.HashMap.hash (HashMap.java:338)
at java.util.HashMap.put (HashMap.java:618)
at com.diffplug.spotless.maven.FormattersHolder.create (FormattersHolder.java:43)
at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:232)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
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.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
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)
```

Versions:

- Maven 3.9.9
- Java 21.0.5 on Windows 10 x64
- spotless-maven-plugin 2.43.0

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie mit plugin-maven/src/main/java/com/diffplug/spotless/maven/java/Eclipse.java an der Referenz auf cacheDirectory und mit AbstractSpotlessMojo.java an der Referenz auf RepositorySystemSession. Reproduzieren Sie dies mit Maven 3.9.9, einer settings.xml, die ein nicht standardmäßiges localRepository verwendet, und der bereitgestellten Eclipse formatter-Konfiguration. Als abgeschlossen gilt es, wenn der Eclipse formatter den konfigurierten Repository-Pfad statt des standardmäßigen .m2/repository verwendet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
build-system
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
56/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.