Bagaimana cara menambahkan direktori sumber tambahan agar maven dapat dikompilasi dan dimasukkan ke dalam build jar?
95
Selain src / main / java, saya menambahkan direktori src / bootstrap yang ingin saya sertakan dalam proses build saya, dengan kata lain, saya ingin maven mengkompilasi dan memasukkan source yang ada di build saya. Bagaimana!?
Pertanyaan sederhana: Mengapa tidak memindahkan kode sumber ke src / main / java? Atau buat proyek / modul maven terpisah yang berisi kode dan tentukan sebagai ketergantungan.
khmarbaise
7
Dalam kasus saya, saya perlu menambahkan folder sumber yang dihasilkan, yang saya lebih suka berada di dalam target.
djjeck
Atau, satu mungkin ingin tempat integrasi-tes di direktori selain src/{main,test}/seperti yang diceritakan di sini
Apakah eclipse benar-benar mengenali folder seperti itu sebagai salah satu folder buildpathuntuk semua orang? 'cos itu tidak untuk saya. FWIW, saya gunakan m2euntuk mengimpor proyek.
mystarrocks
Jawaban yang bagus, hanya untuk memperjelas, Anda harus mengganti maven-compiler-plugin Anda dengan baris-baris dari atas ...
Colin
Bekerja di IntelliJ juga.
Alexander Klimetschek
1
Eclipse meminta saya memasang plugin untuk m2e, konektor pembantu build. Saya melakukannya, dan kesalahan siklus hidup hilang.
Alexis Dufrenoy
1
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)mendapatkan kesalahan ini
Katie
35
CATATAN: Solusi ini hanya akan memindahkan file sumber java ke direktori target / kelas dan tidak akan mengkompilasi sumber.
Tampaknya Anda memang perlu menghapus ** pengecualian untuk folder yang ditambahkan pada jalur build Eclipse :(
Dormouse
@Dormouse dapatkah Anda menjelaskan?
Saikat
1
Tidak bekerja dengan IntelliJ, ini akan terlihat <resource>sebagai folder "Resource" tetapi bukan sebagai folder "Source", misalnya ia tidak akan mengkompilasi file sumber Java di dalamnya.
Alexander Klimetschek
4
Solusi ini hanya akan memindahkan file sumber java ke direktori target / kelas dan tidak akan mengkompilasi sumber
Ini menggantikan direktori src / main / java default. Jika Anda menginginkan banyak direktori, Anda juga harus menentukan direktori default.
Natix
2
Pertanyaannya adalah bagaimana menambahkan beberapa direktori sumber dan Anda mengusulkan metode untuk menambahkan hanya satu direktori sumber, yang berlawanan dengan yang diminta.
João Matos
1
Dengan versi Maven terbaru (3) dan versi terbaru dari plugin compiler maven (3.7.0), saya perhatikan bahwa menambahkan folder sumber dengan build-helper-maven-plugintidak diperlukan jika folder yang berisi kode sumber untuk ditambahkan dalam build terletak di targetfolder atau subfoldernya.
Tampaknya plugin compiler maven mengkompilasi kode sumber java apa pun yang terletak di dalam folder ini apa pun direktori yang berisi mereka.
Misalnya memiliki beberapa (yang dihasilkan atau tidak) kode sumber di target/a, target/generated-source/fooakan disusun dan ditambahkan dalam outputDirectory yang: target/classes.
Mengapa orang-orang yang tidak disukai? Pada dasarnya jawaban yang sama dengan saiky0 (yang memiliki suara positif) tetapi sebelumnya?
Friso
15
@Friso karena itu tidak benar. Menambahkan direktori sumber daya akan menambahkan sumber daya (file disalin ke target/classes, tetapi tidak dikompilasi). Pertanyaan ini adalah tentang menambahkan direktori sumber, yang memegang file yang akan dikompilasi ke dalam target/classes, tidak disalin.
src/{main,test}/
seperti yang diceritakan di siniJawaban:
Anda dapat menggunakan Plugin Build Helper , misalnya:
sumber
buildpath
untuk semua orang? 'cos itu tidak untuk saya. FWIW, saya gunakanm2e
untuk mengimpor proyek.Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)
mendapatkan kesalahan iniPerbarui
pom.xml
sebagai -sumber
<resource>
sebagai folder "Resource" tetapi bukan sebagai folder "Source", misalnya ia tidak akan mengkompilasi file sumber Java di dalamnya.http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
juga lihat
Kompilasi Maven dengan beberapa direktori src
sumber
Dengan versi Maven terbaru (3) dan versi terbaru dari plugin compiler maven (3.7.0), saya perhatikan bahwa menambahkan folder sumber dengan
build-helper-maven-plugin
tidak diperlukan jika folder yang berisi kode sumber untuk ditambahkan dalam build terletak ditarget
folder atau subfoldernya.Tampaknya plugin compiler maven mengkompilasi kode sumber java apa pun yang terletak di dalam folder ini apa pun direktori yang berisi mereka.
Misalnya memiliki beberapa (yang dihasilkan atau tidak) kode sumber di
target/a
,target/generated-source/foo
akan disusun dan ditambahkan dalam outputDirectory yang:target/classes
.sumber
Anda dapat menambahkan direktori untuk proses build Anda seperti:
Src / main / java adalah jalur default yang tidak perlu disebutkan di pom.xml
sumber
target/classes
, tetapi tidak dikompilasi). Pertanyaan ini adalah tentang menambahkan direktori sumber, yang memegang file yang akan dikompilasi ke dalamtarget/classes
, tidak disalin.