Связанный вопрос Как настроить IntelliJ IDEA и / или Maven для автоматического добавления каталогов с исходным кодом Java, созданным с помощью jaxb2-maven-plugin?
У меня есть настраиваемый плагин, который генерирует источники target/generated-sources
(здесь не указывайте имя инструмента). Так что я получаю такие источники, как target/generated-sources/com/mycompany
...
Этот формат вообще нельзя изменить, поэтому я смогу настроить Intellij на добавление его в качестве исходной папки. На данный момент я вижу, что Intellij добавлен target/generated-sources/com
в качестве исходной папки.
Обратите внимание, что у меня нет возможности настроить плагин!
ОБНОВЛЕНИЕ 1 : Я не согласен с тем фактом, что я ДОЛЖЕН помещать свои сгенерированные источники в папку с именами инструментов. Это может быть хорошее соглашение, но если у меня есть только один генератор, мне не нужно его туда помещать? Опять же, в моем pom.xml у меня есть resources
раздел, в котором четко указано, что его target/generated-sources
следует рассматривать как исходную папку. Это отлично работает в Eclipse, поэтому я понятия не имею, почему Intellij не уважает мои настройки.
TL; DR -> Когда я добавляю в target/generated-sources
раздел ресурсов, pom.xml
почему Intellij слишком рьяно добавляет target/generated-sources/com
в путь к классам?
источник
Ответы:
Вы можете просто изменить структуру проекта, чтобы добавить эту папку в качестве «исходного» каталога.
Структура проекта → Модули → Щелкните
generated-sources
папку и сделайте ееsources
папкой.Или:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
источник
mvn idea:idea
В моем случае бег решил проблему. Для записей.Я использую решение Maven (приложение SpringBoot):
Затем Intellij автоматически импортирует сгенерированные источники в проект.
источник
С помощью Gradle настройки проекта будут очищаться всякий раз, когда вы обновляете настройки Gradle. Вместо этого вам нужно добавить следующие строки (или аналогичные) в свой build.gradle, я использую kotlin, поэтому:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
источник
gradle idea
. Благодарность! :)Исправление
Перейдите в Структура проекта - Модули - Исходные папки и найдите
target/generated-sources/antlr4/com/mycompany
- щелкните Изменить свойства и установите для префикса пакета значениеcom.mycompany
.Именно по этой причине мы можем установить префикс пакета для исходных каталогов.
Другая, но связанная проблема здесь
источник
src/main/antlr4/<path-to-package>/
, то она будет отображаться вtarget/generated-sources/antlr4/<path-to-package>
. IntelliJ автоматически пометил правильный каталог в качестве корневого источника, и префикс пакета не требовался. Я подозреваю, что это исправление необходимо, когда люди помещают свои грамматики напрямуюsrc/main/antlr4
, что по какой-то причине часто рекомендуется.Тот, кто написал этот плагин, сильно облажался. Это не способ сделать это!
Любой обходной путь был бы огромным взломом, заставившим разработчика плагина узнать о его ошибке.
Извините, это единственное, что нужно сделать.
Хорошо, вот хак, сразу после запуска вашего плагина используйте плагин antrun, чтобы переместить каталог в другое место:
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>process-sources</phase> <configuration> <target> <move todir="${project.build.directory}/generated-sources/toolname/com" overwrite="true"> <fileset dir="${project.build.directory}/generated-sources/com"/> </move> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
В этом примере
toolname
следует заменить на все, что однозначно идентифицирует плагин, создавший код, иcom
обозначает корень созданных пакетов. Если у вас несколько корневых пакетов, вам, вероятно, понадобится несколько<move>
задач.Но если плагин добавляет папку в качестве исходной папки, то вы облажались.
источник
target/generated-sources/my-tool
.Может быть, вы можете добавить шаг к этапу создания источников, который перемещает папку?
источник
У меня была такая же проблема с Eclipse пару месяцев назад при импорте моего проекта. Теперь то же самое было и с intelliJ. Вот как кто-то помог мне решить эту проблему в IntelliJ:
Меню => Вид => Окна инструментов => Проект Maven. В значении spring_user => Выполнить конфигурацию выберите чистую установку. Это должно выполнить чистую установку, и после этого вы сможете увидеть классы
источник
Решил, удалив «Исключено» в настройках модуля (щелкните правой кнопкой мыши проект, «Открыть настройки модуля»).
источник
Единственным рабочим условием после нескольких попыток было удалить скрытую папку .idea из корневой папки проекта и повторно импортировать ее из Intellij.
источник
Я хотел обновить комментарий, ранее сделанный DaShaun , но, поскольку это мой первый комментарий, приложение не позволило мне.
Тем не менее, я использую eclipse, и после того, как я добавил упомянутый ниже фрагмент кода в свой pom.xml, как было предложено Dashun, я запустил пакет mvn clean для генерации исходных файлов avro, но я все еще получал ошибку компиляции в рабочей области.
Я щелкнул правой кнопкой мыши project_name -> maven -> update project и обновил проект, который добавил target / generated-sources в качестве исходной папки в мой проект eclipse.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
источник