Как добавить дополнительный исходный каталог для maven для компиляции и включения в сборочную банку?
95
В дополнение к src / main / java я добавляю каталог src / bootstrap, который хочу включить в свой процесс сборки, другими словами, я хочу, чтобы maven скомпилировал и включил исходники в мою сборку. Как!?
Простой вопрос: почему бы не переместить исходный код в src / main / java? Или создайте отдельный проект / модуль maven, содержащий код, и определите его как зависимость.
khmarbaise
7
В моем случае мне нужно добавить папку сгенерированных источников, которую я предпочитаю находиться внутри цели.
djjeck
В качестве альтернативы, один может понадобиться место интеграции-тестов в других каталогах , чем src/{main,test}/как сказано здесь
Действительно ли eclipse распознает такую папку как одну из buildpathлюбых? Потому что это не для меня. FWIW, использую m2eдля импорта проекта.
mystarrocks
Отличный ответ, просто чтобы прояснить, вы должны заменить свой maven-compiler-plugin на строки сверху ...
Колин
Также работает в IntelliJ.
Александр Климечек
1
Eclipse попросил меня установить плагин для m2e, соединителя помощника сборки. Я сделал это, и ошибка жизненного цикла исчезла.
Alexis Dufrenoy 01
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)получение этой ошибки
Кэти
35
ПРИМЕЧАНИЕ. Это решение просто переместит исходные файлы Java в каталог target / classes и не будет компилировать исходники.
Похоже, вам действительно нужно удалить ** исключение для добавленной папки в пути сборки Eclipse :(
Dormouse
@ Соня, можешь объяснить, пожалуйста?
Saikat
1
Не работает с IntelliJ, он будет отображаться <resource>как папка «Ресурс», но не как папка «Исходный код», например, он не будет компилировать исходные файлы Java внутри них.
Александр Климечек
4
Это решение просто переместит исходные файлы java в каталог target / classes и не будет компилировать исходники
Это отменяет каталог по умолчанию src / main / java. Если вам нужно несколько каталогов, вы также должны указать каталог по умолчанию.
Natix
2
Вопрос в том, как добавить несколько исходных каталогов, и вы предлагаете метод добавления только одного исходного каталога, что противоположно тому, что задают.
Жуан Матос,
1
В последних версиях Maven (3) и последней версии плагина компилятора maven (3.7.0) я заметил, что добавление исходной папки с помощью build-helper-maven-pluginне требуется, если папка, содержащая исходный код для добавления в сборку, находится в targetпапку или подпапку в ней.
Кажется, что плагин компилятора maven компилирует любой исходный код Java, расположенный внутри этой папки, независимо от того, в каком каталоге они находятся.
Так , например , имеющие некоторые (генерируется или нет) исходный код в target/a, target/generated-source/fooне будут собраны и добавлены в OutputDirectory: target/classes.
Почему люди против? В основном тот же ответ, что и у saiky0 (у которого есть положительные голоса), но раньше?
Friso
15
@Friso, потому что это неправильно. Добавление каталога ресурсов добавит ресурсы (файлы, скопированные target/classes, но не скомпилированные). Этот вопрос о добавлении исходного каталога, который содержит файлы , которые будут скомпилированы в target/classesне копировали.
src/{main,test}/
как сказано здесьОтветы:
Вы можете использовать подключаемый модуль Build Helper , например:
источник
buildpath
любых? Потому что это не для меня. FWIW, используюm2e
для импорта проекта.Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)
получение этой ошибкиОбновите
pom.xml
как -источник
<resource>
как папка «Ресурс», но не как папка «Исходный код», например, он не будет компилировать исходные файлы Java внутри них.http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
также см
Компиляция Maven с несколькими каталогами src
источник
В последних версиях Maven (3) и последней версии плагина компилятора maven (3.7.0) я заметил, что добавление исходной папки с помощью
build-helper-maven-plugin
не требуется, если папка, содержащая исходный код для добавления в сборку, находится вtarget
папку или подпапку в ней.Кажется, что плагин компилятора maven компилирует любой исходный код Java, расположенный внутри этой папки, независимо от того, в каком каталоге они находятся.
Так , например , имеющие некоторые (генерируется или нет) исходный код в
target/a
,target/generated-source/foo
не будут собраны и добавлены в OutputDirectory:target/classes
.источник
Вы можете добавить каталоги для процесса сборки, например:
Src / main / java - это путь по умолчанию, который не нужно указывать в pom.xml
источник
target/classes
, но не скомпилированные). Этот вопрос о добавлении исходного каталога, который содержит файлы , которые будут скомпилированы вtarget/classes
не копировали.