diffplug / diffplug/spotless

Cannot exclude generated source in a multi-module gradle build

Aperta
#1,163 1 commento 2 reazioni 0 assegnatari Vedi su GitHub
bug-unconfirmed
Lingua principale
Java
Stelle
5.6k
Fork
559
Merge medio
1g 14h
PR unite (30g)
43

Descrizione

Spotless error! All target files must be within the project dir.
project dir: /Users/niels/repo/sx/helium/helium-main/helium-data-model
target: /Users/niels/repo/sx/helium/helium-main/build/helium-data-model/generated/sources/xjc/java/com/soundexchange/helium/distribution/iso20022/NameAndAddress3.java'

I stepped through the build in a debugger and found that the problem lies in SpotlessTaskImpl.getOutputFile(). The call to FormatExtension.relativize returns null, which causes the exception to be thrown. relativize returns null because the targetExclude (${project.rootDir}/build/generated...) specified is not a child of the subproject directory in a multi-module build. So targetExclude can't be used to exclude generated sources from a multi-module build, because the build output is at the root directory, not the subproject directory.

_Originally posted by @niels1voo in https://github.com/diffplug/spotless/issues/399#issuecomment-1090845702_

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da SpotlessTaskImpl.getOutputFile() e segui FormatExtension.relativize() per il percorso targetExclude in una build Gradle multi-modulo. Riproduci la disposizione segnalata con la directory radice del progetto e la directory del sottoprogetto e verifica che le sorgenti generate nella directory di build radice possano essere escluse senza l’errore “All target files must be within the project dir”.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
build-system
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.