2010-04-15 10 views
5

Şu anda tutuklu olarak geliştirme/hata ayıklama için iskelede çalıştırılması gereken bir maven web uygulaması projesi üzerinde çalışmaya başladım:.Bir maven projesinde bir XML dosyasına nasıl erişilir, böylece paketlendiğinde kullanılabilir kalır

Şimdi, çalışma zamanında erişmem gereken içeriğe sahip bir XML dosyanız var. Benim problemim: dosyayı nereye koyacağınız kodun hem “patlatılmış” hem de paketlenmiş (yani SAVAŞ) modunda çalışacak şekilde yerleştirilmesi nerede?

Dosyayı src/main/java'ya (classpath'ta olduğu gibi) koymak, maven, ambalajdaki tüm java dışı dosyaları filtrelediğinden kesmeyecektir. Dosya src/main/resources'deyken, projenin ana yolunu (tutulması geliştirme sırasında) belirlemek ve bu dizine bakmak bir ortalama olacaktır - ancak bu proje olacağı zaman artık böyle olmayacaktır paketlenmiş.

Tabii ki dosyayı her iki konumdan okumaya çalışan yazı koduna gidebilirim, ancak bu oldukça hantal görünüyor. Baska öneri?

cevap

6

dosyaları, target/classes dizinine kopyalanır ve sınıf yolunda kullanılabilir. Sadece onları sınıf yolundan oku. (Burada bir test kaynağı ile) maven belgelerinden How do I add resources to my JAR? açıklandığı gibi: bir birim testinde

Eğer kaynak test için gerekli aşağıdaki erişim gibi basit bir kod pasajı kullanabilirsiniz:

Bu durumda
... 

// Retrieve resource 
InputStream is = getClass().getResourceAsStream("/test.properties"); 

// Do something with the resource 

... 
1

Ben src/main/resources dizin altında dosya koymak ve Bahar en ClassPathResource kullanın. Bu şekilde dosya, Maven oluşturma işlemi sırasında ve çalışma zamanında IDE'de erişilebilir.

İlgili konular