2010-11-15 12 views
41

Voglio mettere un file di configurazione nel mio progetto Maven. Guardando a the standard directory layout, ci sono due posti che sembrano ragionevoli, "src/main/resources" e "src/main/config". Qualcuno potrebbe spiegare la differenza tra questi e spiegare quando mettere qualcosa in config e quando in resources?In maven, qual è la differenza tra main/resources e main/config?

In questo caso, il file sto guardando è ehcache.xml, ma la mia domanda non è EHCache specifico, sono curioso per log4j.properties ecc

Un po 'di googling scoperto this person had the same question, ma le risposte sembravano contraddittorio e non molto autoritario.

+0

Penso di aver trovato un caso d'uso per la directory principale/config. Ho un paio di file di configurazione che sono facoltativi da usare e non sono utili nel classpath. Esempi di file di configurazione per l'app e il contenitore su cui è distribuito. Non riesco a trovare nessun altro posto per loro. – akostadinov

+0

Questo potrebbe essere un buon posto per i file di configurazione plug-in di eclipse (findbugs, checkstyle, ecc.). Non vorrei che questi siano raggruppati nel file di archivio. – jbruni

risposta

47

Lo scambio e-mail all'indirizzo http://www.mail-archive.com/[email protected]/msg90985.html dice:

"Questo è tutto teoria ... Forse durante la scrittura dei documenti, qualcuno coinvolto con lo sviluppo Maven pensato che potrebbe essere utile avere una directory src/main/config e quindi è stata inclusa in docs, ma dal momento che non è mai stata implementata nel codice, non viene utilizzata oggi. "

e

"La directory [src/main/config] non si presenta sul classpath in modo che le applicazioni o di prova classi non può leggere nulla in esso. "

Quindi basta usare src/main/resources

. Nota: Non so se questo è vero (io sono il richiedente questione), ma questo spiegherebbe il motivo per cui così tante persone sul web raccomandano src/main/resources per log4j .properties Se le persone sono d'accordo questa è la risposta giusta potresti farmelo sapere (commentare o votare) l'ho messo qui per salvare altre persone la digitazione

+1

Questo è corretto, basta usare 'src/xxx/resources' per tutti i file non sorgenti che si desidera ottenere sul classpath. Certo, puoi decidere di aggiungere altre directory, ma dovrai aggiungere una configurazione specifica al POM. –

+0

Grazie per il chiarimento. Stavo guardando la documentazione e la [sezione standard di layout di directory] (http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html) non fa menzione di questo :( – seneyr

+2

Uso src/main/config per conservare gli elementi di configurazione che non desidero impacchettati nella destinazione, come gli script di configurazione di JBoss. – jbruni

7

scr/main/resources è un luogo in cui si inseriscono immagini, suoni, modelli, pacchetti di lingue, file testuali e binari utilizzati dal codice sorgente. Tutti i file di configurazione come excache.xml, log4j.properties, logback.xml e altri vanno su src/main/config.

Aggiungi alla tua pom.xml:

<build> 
    <resources> 
     <resource> 
      <targetPath>.</targetPath> 
      <directory>src/main/config</directory> 
     </resource> 
    </resources> 
</build> 
+0

mi sembra ragionevole, ma hai un riferimento? Esistono varie e-mail, ad esempio http://markmail.org/message/lve4d2qzba2lritd che dicono che le risorse sono il posizionamento standard per log4j.properties –

+0

Impossibile trovarne. È solo un buon senso. Ovunque lo metti, assicurati che si trovi su un classpath, in modo che venga raccolto dalla libreria log4j. –

+0

Grazie. C'è un modo standard per aggiungere questa directory al classpath sotto Maven? (Sono un nuovo utente esperto) –

0

L'uso del caso è piuttosto semplice se me lo chiedi. (Sembra src/main/config è stato rimosso layout di directory standard)

  • /src/main/resources andare avanti in vaso e quindi sulla classpath
  • /src/main/config è destinato per il plugin di montaggio in cui si potrebbe costruire un file zip:

    hello-world.zip 
    lib/ 
        <dependencies> 
    bin/ 
        run.bat 
        run.sh 
    config/ 
        config.properies 
    
Problemi correlati