Я хотел бы знать, что Intellij IDEA будет делать с моим проектом Maven, когда я нажму "построить проект"?
Как Intellij будет строить проект с Maven?
Будет ли intellij идея "mvn install" автоматически при создании проекта?
Ответ 1
Intellij IDEA не будет автоматически выполнять make install
когда вы выполняете проект Build Project
. Чтобы сделать это, действуйте следующим образом:
На вкладке " Maven Projects
" (обычно с правой стороны) выберите цели, которые вы хотите запустить Intellij после Build → Make Project
а затем щелкните правой кнопкой мыши и выберите триггер (например, в приведенном выше снимке, триггер был выбран как " Execute After Make '. Вы можете выбрать все, что пожелаете).
После этого Build → Make Project
будет запускать mvn clean install
.
Ответ 2
Система IntelliJ build относится к экосистеме Maven для некоторых подсказок, но в конце концов это отдельная система сборки.
В IntellIJ у вас есть проект со многими модулями. Это оба понятия IntelliJ.
Модуль IntelliJ несет ответственность за понимание своих зависимостей и библиотек. Это можно сделать исключительно с помощью семантики IntelliJ, или IntelliJ может позволить некоторой другой системе сборки объявлять зависимости и библиотеки. То есть: модуль IntelliJ может быть основан на Maven pom.xml
или Gradle build.gradle
.
Когда вы нажимаете "Сделать" на Java-модуле IntelliJ: IntelliJ проверяет, какие библиотеки запрашивает ваш модуль, а также разрешает зависимости вашего модуля, какие библиотеки запрашивают у его зависимых модулей.
Как только библиотеки известны: IntelliJ будет вызывать Javac
или компилятор Eclipse (в зависимости от того, что вы настроили как ваш компилятор Java) со всеми этими библиотеками в пути к классам. И он выдаст банку, а не артефакт Maven.
IntelliJ Make не будет запускать mvn compile
или аналогичную (если вы не настроите ее явно, как ответ @Ashutosh Jindal.
Почему IntelliJ использовал свою собственную отдельную систему сборки, когда вы предоставили авторитетное определение того, как вы хотели бы построить свой проект? Я могу представить себе различные причины:
- Maven обычно выводит артефакт (источники и двоичные баночки и
pom.xml
), тогда как IntelliJ нуждается в дополнительных семантических и индексах, чтобы обеспечить весь свой интеллект IDE. Имеет смысл выполнять процесс индексирования наряду с компиляцией, поскольку: если вы выполняете компиляцию поэтапно, вы можете постепенно понять, какие индексы также загрязнены. - IDE выигрывает от участия в процессе компиляции. Например: IntelliJ может выполнять сборку "продолжить по ошибке" с использованием компилятора Eclipse. Кроме того, компилятор Eclipse может быть использован для компиляции только тех файлов, которые изменились (IDE наблюдают за вами, когда вы код, поэтому они очень хорошо знают, какие файлы загрязнены). Я слышал, что Maven делает инкрементную компиляцию, но я не знаю, как ее производительность сравнивается.
- Для поддержки множества систем сборки (Ant, Maven, Gradle): самый простой технический подход для IntelliJ заключается в том, чтобы полагаться на минимально возможное количество семантики, специфичной для домена, и использовать ее для информирования о конкретной системе сборки IntelliJ. Это позволяет им повторно использовать большой объем кода и иметь несколько различий в домене.