Desidero sostituire alcune righe nel mio file Config.java prima che il codice venga compilato. Tutto quello che sono riuscito a trovare è analizzare il file attraverso il filtro durante la copia. Non appena devo copiarlo ho dovuto salvarlo da qualche parte - ecco perché sono andato per la soluzione: copiare in posizione temp sostituendo le righe> cancella il file originale> copia il file duplicato nella posizione originale> cancella il file temporaneo. C'è una soluzione migliore?L'operazione gradle sostituisce la stringa nel file .java
risposta
può essere che si dovrebbe provare qualcosa di simile formica di replaceregexp:
task myCopy << {
ant.replaceregexp(match:'aaa', replace:'bbb', flags:'g', byline:true) {
fileset(dir: 'src/main/java/android/app/cfg', includes: 'TestingConfigCopy.java')
}
}
Questo compito sarà sostituire tutte le occorrenze di aaa
con bbb
. Ad ogni modo, è solo un esempio, puoi modificarlo sotto i tuoi scopi o provare qualche soluzione simile con la formica.
- Certamente non sovrascrivere il file originale
- mi piace mantenere le cose directory base piuttosto che il nome del file in base, quindi se si trattasse di me, avevo messo Config.java nella cartella di essa la propria (ad esempio
src/replaceme/java
) - Vorrei creare una directory
generated-src
sotto$buildDir
in modo che venga eliminata tramite l'attivitàclean
.
È possibile utilizzare il filtro Copia e Sostituisci filtri. Ad esempio:
apply plugin: 'java'
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter(ReplaceTokens, tokens: [
'xxx': 'aaa',
'yyy': 'bbb'
])
}
// the following lines are important to wire the task in with the compileJava task
compileJava.source "$buildDir/generated-src"
compileJava.dependsOn generateSources
Ho già utilizzato il metodo di sostituzione e il suo funzionamento in modo impeccabile ma una volta modificato manualmente il file Config.java, potrei raggiungere alcuni indesiderati afferma, quindi la tua soluzione sembra molto meglio. Cosa fa esattamente compileJava.source = [files]? Come fa a sapere se voglio sostituire Config.java nel pacchetto di parole 'com.example.cfg' e non nel file con lo stesso nome nel pacchetto 'com.example.remote.cfg'? – Srneczek
Come ho detto, preferisco usare le directory piuttosto che i pattern specifici dei nomi dei file. Quindi nel mio esempio tutto in 'src/replaceme/java' sarà sostituito indipendentemente dal pacchetto. 'compileJava.source generateSources.outputs.files' richiama [JavaCompile.source (...)] (https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/compile/JavaCompile.html) che alla fine aggiunge le sorgenti generate in modo che vengano compilate insieme ai normali file sorgente (in 'src/main/java'). Non c'è nessun segno "=" nel mio suggerimento –
Per completare lance-java
's risposta, ho trovato questo idioma più semplice se c'è solo un valore che si sta cercando di cambiare:
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter { line -> line.replaceAll('xxx', 'aaa') }
}
- 1. Il progetto java gradle sostituisce una riga singola nel file durante la creazione
- 2. replaceAll non sostituisce la stringa
- 3. Con Java: sostituire la stringa nel file MS Word
- 4. android (modifica la stringa nel codice java)
- 5. javascript - stringa sostituisce
- 6. Sostituisce una stringa con un'altra stringa
- 7. Kotlin: sostituisce la proprietà generica nel sottotipo
- 8. java sostituisce le dieresi tedesche
- 9. sostituisce stringa/valore nell'intero dataframe
- 10. Gradle: come caricare file JAR personalizzato nel repository Maven
- 11. La stringa sostituisce la corrispondenza esatta in cirillico
- 12. File duplicati nel file .war creato da Gradle
- 13. Cambia la directory di output del codice generato nel gradle
- 14. chiama la classe java nel file batch
- 15. Java Files.copy sostituisce completamente il file di eliminazione esistente
- 16. Stringa di escape Java per l'archiviazione nel file csv
- 17. Sostituisce la stringa da destra a sinistra in Python?
- 18. La stringa sostituisce utilizzando un enorme spazio heap
- 19. Sostituisce la prima occorrenza di stringa in Python
- 20. Sostituisce la sottostringa in una stringa con intervallo in JavaScript
- 21. javascript regexp replace non funziona, ma la stringa sostituisce works
- 22. Haskell sostituisce i caratteri nella stringa
- 23. Trova e sostituisci la stringa nel mio testo con VBScript
- 24. Stringa che sostituisce in un div
- 25. Semplice espressione regolare java sostituisce domanda
- 26. Esegui jar con parametri nel gradle
- 27. convertire la stringa nel formato java.util.date in java
- 28. Sostituzione stringa nel file Unix
- 29. Ruby sostituisce stringa con motivo regex catturato
- 30. PHP Sostituisce l'ultima occorrenza di una stringa in una stringa?
vedere un altro aproach a: [http: // stackoverflow.com/a/17572644/890357](http://stackoverflow.com/a/17572644/890357) – marciowb