2016-02-22 30 views
5

La mia applicazione richiede che una directory \config sia disponibile sul classpath quando cerca i file di configurazione nella directory. Al momento ho dipendenze configurati in questo modo, anche se questo non è probabilmente il modo corretto di creare una directory a disposizione la mia domanda:Gradle - aggiungi directory al classpath

dependencies { 
    ... //runtime, compile dependencies pulled from repositories 
    runtime files('config') 
} 

Sto usando il plugin application per creare una cerniera standalone per il mio progetto. Se il mio elenco \config ha \config\subdir, file1, file2, allora il plugin produce una directory build\install con la seguente struttura:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ------|subdir 
| ------ file1 
| ------ file2 

Questo non funziona per la mia domanda perché si aspetta in modo esplicito una directory \config

Tuttavia, questa è la struttura di directory di cui ho bisogno:

| build 
| --|install 
| ----|bin 
| ------ projectName 
| ------ projectName.bat 
| ----|lib 
| ------ dependency1.jar 
| ------ dependency2.jar 
| ----|config 
| ------|subdir 
| ------ file1 
| ------ file2 

Come posso aggiungere a gradle un'altra directory alla compilazione d lo specifichi come parte del classpath per gli script di avvio generati?

+0

Dove si trova la cartella di configurazione nelle directory di origine? Se è in 'src/main/resources', immagino che il plug-in dell'applicazione lo impacchetta pure – RaGe

+0

Non è nelle directory di origine. È nella cartella principale del progetto. Dovrebbe essere spostato? –

+0

Come lo si aggiunge a classpath? Sì, suggerisco di spostarlo su/src/dist come postato di seguito. – RaGe

risposta

4

Il plugin applicazione documentation dice:

file statici da aggiungere alla distribuzione può essere semplicemente inserito in src/dist

vorrei provare a mettere la vostra directory di configurazione in src/dist/lib e continuare ad aggiungere al classpath con runtime files('src/dist/lib/config')

Nota: lavorare intorno a this defect significa che la configurazione deve passare /lib sotto src/dist

+0

Ho provato questo approccio. Ora posso ottenere la seconda struttura di directory che ho descritto nella mia domanda, ma il classpath è ancora errato negli script generati. Sta definendo classpath come 'set CLASSPATH =% APP_HOME% \ lib \ config' quando dovrebbe essere' set CLASSPATH =% APP_HOME% \ config'. Come posso raggiungere questo obiettivo? –

+0

Se configuro manualmente lo script generato per 'settare CLASSPATH =% APP_HOME% \ config', la mia applicazione funziona correttamente ma questo non è assolutamente l'ideale. Non dovrei modificare l'output della build, giusto? –

+2

Sigh, sembra che tu stia imbattendo in questo: https://issues.gradle.org/browse/GRADLE-2991 e no, non dovresti modificare manualmente alcun script dopo la compilazione. La soluzione più semplice a cui riesco a pensare è di mettere la cartella di configurazione in '/ src/dist/lib' – RaGe

0

Si può provare questo:

project('project-name') { 
    apply plugin: 'application' 
    mainClassName = "your.main.Class" 

    startScripts { 
     classpath += files('src/dist/lib/conf') 
    } 

Maggiori informazioni possono essere trovate here.