Di mana saya harus meletakkan file log4j.properties ketika menggunakan direktori Maven konvensional?
java
maven
configuration
log4j
pengguna496949
sumber
sumber
Jawaban:
src/main/resources
adalah "penempatan standar" untuk ini.Pembaruan: Jawaban di atas pertanyaan, tetapi itu bukan solusi terbaik. Lihat jawaban lain dan komentar tentang ini ... Anda mungkin tidak akan mengirim properti logging Anda sendiri dengan jar tetapi sebaliknya menyerahkannya kepada klien (misalnya server aplikasi, lingkungan panggung, dll) untuk mengonfigurasi logging yang diinginkan. Jadi, memasukkannya ke dalam
src/test/resources
adalah solusi pilihan saya.Catatan: Berbicara tentang meninggalkan konfigurasi log konkret kepada klien / pengguna, Anda harus mempertimbangkan untuk mengganti
log4j
denganslf4j
di aplikasi Anda.sumber
resources
danlog4j.properties
di folder yang disebutkan dalam jawaban.src/main/resources
akan disalin per default ketarget/classes
Hanya dengan memasukkannya,
src/main/resources
akan mengikatnya di dalam artefak. Misalnya jika artefak Anda adalah JAR, Anda akan memilikilog4j.properties
file di dalamnya, kehilangan titik awal untuk membuat logging dapat dikonfigurasi.Saya biasanya memasukkannya ke dalam
src/main/resources
, dan mengaturnya untuk menjadi output ke target seperti:Selain itu, agar log4j benar-benar melihatnya, Anda harus menambahkan direktori output ke jalur kelas. Jika artefak Anda adalah JAR yang dapat dieksekusi, Anda mungkin menggunakan plugin maven-assembly-plugin untuk membuatnya. Di dalam plugin itu, Anda bisa menambahkan folder JAR saat ini ke jalur kelas dengan menambahkan
Class-Path
entri manifes seperti:Sekarang file log4j.properties akan berada tepat di sebelah file JAR Anda, dapat dikonfigurasi secara independen.
Untuk menjalankan aplikasi Anda langsung dari Eclipse, tambahkan
resources
direktori ke classpath Anda di konfigurasi run Anda:Run->Run Configurations...->Java Application->New
pilihClasspath
tab, pilihAdvanced
dan browse kesrc/resources
direktori Anda .sumber
${project.build.directory}
atau harus diedit ke jalur aktual proyek yang hidup di drive lokal saya?Beberapa akun "penambangan data"
src/main/resources
adalah tempat yang biasa.Hasil pada Pencarian Kode Google :
src/main/resources/log4j.properties
: 4877src/main/java/log4j.properties
: 215sumber
resources
tidakresource
, jika saya ingat dengan benar.resource
hanya salah ketik.Sumber daya yang digunakan untuk menginisialisasi proyek sebaiknya dimasukkan ke folder src / main / resources . Untuk mengaktifkan pemuatan sumber daya ini selama pembangunan, seseorang dapat menambahkan entri di pom.xml dalam proyek pakar sebagai sumber daya bangunan
File .properties lainnya juga dapat disimpan dalam folder ini yang digunakan untuk inisialisasi. Penyaringan disetel benar jika Anda ingin memiliki beberapa variabel dalam file properti folder sumber daya dan mengisinya dari profil filter file properti, yang disimpan dalam src / main / filter yang ditetapkan sebagai profil tetapi itu adalah kasus penggunaan yang berbeda sama sekali . Untuk saat ini, Anda dapat mengabaikannya.
Ini adalah plugin sumber daya pakar sumber daya hebat , ini berguna, cukup telusuri bagian lain juga.
sumber
Saat meletakkan file sumber daya di lokasi lain bukanlah solusi terbaik yang dapat Anda gunakan:
Sebagai contoh ketika file sumber daya (misalnya jaxb.properties) masuk jauh ke dalam paket bersama dengan kelas Java.
sumber
Jika file log4j.properties atau log4j.xml Anda tidak ditemukan di bawah src / main / resources gunakan PropertyConfigurator.configure ini ("log4j.xml");
sumber
Tambahkan kode di bawah ini dari tag sumber daya di pom.xml Anda di dalam tag build. jadi itu berarti tag sumber daya harus berada di dalam tag build di pom.xml Anda
sumber