Ho un progetto Java Spring, configurato con Maven. Poiché la quantità di unit test e i loro file di configurazione si sommano rapidamente, sto cercando di centralizzare le configurazioni di test su un file di proprietà (lo stesso, che viene utilizzato nella costruzione del progetto).Specifica del percorso Java per il file delle proprietà
L'unità di test si trovano (rispetto al percorso del progetto, naturalmente) in albero
src/test/java/com (...)
I file di risorse per questi test sono in
src/test/resources(...)
E, infine, il file delle proprietà, che il file di risorse dovrebbero leggere, è nella directory
src/main/filters
Ora, ho una classe Junit dove specificare la posizione del file di configurazione in questo modo:
@ContextConfiguration(locations = { "classpath:com/initrode/quartz/SyncManagerJobTest-context.xml"})
Nel file di configurazione SyncManagerJobTest-context.xml c'è una linea
<context:property-placeholder location="/src/main/filters/deploy.local.properties"/>
Questo si traduce in file delle proprietà da leggere dalla directory. Quello che mi piacerebbe leggere è il file delle proprietà, che si trova sotto src/main/filters. Ho provato a usare ../../ per attraversare la directory verso l'alto, ma questo non ha aiutato. Utilizzando classpath: non ha funzionato neanche. Potrei usare un percorso assoluto con "file:", ma ciò richiederebbe a tutti gli sviluppatori del progetto di modificare la configurazione, il che non è neanche positivo.
Per riassumere, la domanda è: come posso forzare il file di configurazione in src/test/resources/per leggere il file delle proprietà in src/main/filters?
E una domanda bonus correlata: quando si gestiscono i file in ambiente Java, ci sono altri modificatori di "file:" e "classpath:"?
La posizione del file di proprietà non è probabilmente il migliore, ma come sto lavorando su un progetto esistente, mi limiterò a lasciare è .. Abbiamo tre diverse proprietà per diversi ambienti di produzione. Quando si sviluppa l'applicazione, ci sono molte proprietà da configurare, db, ldap e così via. Avere due posizioni di risorse significherebbe dover mantenere due file di proprietà, che considero non ideali. Grazie per i link, li controllerò. – simon
Non sono sicuro di capire cosa intendi con "avere due posizioni di risorse" e comunque non è un requisito. Ma, se hai diversi ambienti di produzione, non devi gestirne diversi per ogni ambiente? Questo è ciò di cui parlano i collegamenti (in modo esperto). –
@Pascal questo è un buon punto (+1), ma dalle altre parti della domanda penso che l'OP non possa significare filtro nel senso di Maven. Quindi i file dovrebbero probabilmente andare in src/main/resources. Quando si lavora con una struttura di progetto esistente anche se questo potrebbe non essere possibile, da qui la mia soluzione alternativa –