2013-10-07 10 views
5

Mi sento come se stessi andando in tondo con questo, quindi si spera che sia relativamente facile da risolvere.Gestione delle risorse che saranno esterne a un file Jar utilizzando Maven (ed Eclipse)

Per l'applicazione che sto sviluppando, desidero avere un set di file XML che contengano informazioni di configurazione. E vorrei che fossero modificabili senza dover ricompilare il file jar. Quindi quello che vorrei è averli in una cartella chiamata risorse nella stessa cartella del file jar. Così la mia struttura destinata è qualcosa di simile

root 
| 
- app.jar 
| 
- resources 
    | 
    - config 
    | 
    - config1.xml 
    - config2.xml 

sono riuscito a registrare il mio pom.xml in modo che possa copiare le risorse nella mia cartella di destinazione utilizzando copy-resources all'interno del maven-resource-plugin.

Ho anche aggiunto la mia directory delle risorse come risorsa (in modo che funzioni all'interno di Eclipse) utilizzando

<resources> 
    <resource> 
     <directory>resources</directory> 
    </resource> 
</resources> 

modo che io possa accedervi utilizzando

getClass().getResource("/config/xml/config1.xml");

e comprendeva la mia directory di risorse sul classpath del manifest del jar (penso) usando manifestEntries nel plugin maven-jar.

<manifestEntries> 
    <Class-Path>. resources</Class-Path&> 
</manifestEntries> 

e ha tentato di escludere la mia risorsa di essere compilato nel file jar utilizzando

<configuration> 
    <exclude>resources/**/*.xml</exclude> 
</configuration> 

sono ancora sempre compilati nel file jar. E se li rimuovo manualmente dal file jar, ottengo un'eccezione di puntatore nullo quando tento di accedere alla risorsa.

Quindi quello che sto cercando di ottenere, e ho bisogno di aiuto a capire è un modo per ottenere la struttura che ho abbozzato sopra per le risorse esterne che non sono compilate nel file jar ma che sono accessibili (via il classpath) per codice all'interno di un jar nella stessa directory root e che funziona ancora in eclissi.

Qualsiasi aiuto o guida sarebbe apprezzato.

+0

Come avete risolto questo problema? – Isaac

+0

Purtroppo non ci sono riuscito. Si tratta di un progetto personale che è leggermente rallentato, quindi al momento tutte le configurazioni sono raggruppate nel file jar nel suo complesso. Potresti guardarlo di nuovo, ma non sono ancora riuscito a capirlo. – Ruanae

risposta

0

Hai perso tag excludes

<configuration> 
    <excludes> 
     <exclude>resources/**/*.xml</exclude> 
    </excludes> 
</configuration> 
+0

Ciao Grazie per quello, era qualcosa che non avevo notato. Ho aggiunto "" al mio pom ma ho ancora le risorse incluse nel file jar. Attualmente sono al lavoro, ma cercherò di postare il pom completo questa sera nel caso ci fosse qualcosa di evidentemente sbagliato in esso – Ruanae

0

È complicatamente possibile escludere tutte le cartelle in questo modo:

<excludes> 
     <exclude>config/</exclude> 
</excludes> 

o solo tutti i file XML da config

<excludes> 
    <exclude>**/config/*.xml</exclude> 
</excludes> 
Problemi correlati