Невозможно использовать Intellij с созданной исходной папкой
Связанный вопрос
Как настроить 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
в путь к классам?
Ответы
Ответ 1
Вы можете просто изменить структуру проекта, чтобы добавить эту папку в качестве "исходного" каталога.
Структура проекта → Модули → Щелкните папку 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>
Ответ 2
Я использую Maven (приложение SpringBoot) решение:
- Щелкните правой кнопкой мыши папку проекта
- Выберите Maven
- Выберите " Создать источники и обновить папки".
Затем Intellij автоматически импортирует созданные источники в проект.
Ответ 3
С gradle параметры проекта будут удалены при обновлении настроек gradle. Вместо этого вам нужно добавить следующие строки (или похожие) в build.gradle, я использую kotlin так:
sourceSets {
main {
java {
srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
}
}
}
Ответ 4
Исправление
Перейдите в раздел Структура проекта - Модули - Исходные папки и найдите target/generated-sources/antlr4/com/mycompany
- щелкните Свойства редактирования и установите префикс пакета в com.mycompany
.
Именно по этой причине мы можем установить префикс Package на исходные dirs.
Разная, но связанная с этим проблема здесь
Ответ 5
Тот, кто написал этот плагин, сильно напортачил. Это не способ сделать это!
Любое обходное решение было бы огромным взломом, чтобы разработчик плагина узнал о своей ошибке.
Извините, это единственное, что нужно сделать.
Хорошо, вот взломайте, прямо после выполнения вашего плагина, используйте плагин 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>
.
Но если плагин добавляет папку в качестве исходной папки, тогда вы ввернуты.
Ответ 6
Может быть, вы можете добавить шаг к фазе генерируемых источников, который перемещает папку?
Ответ 7
У меня была такая же проблема с Eclipse пару месяцев назад при импорте моего проекта. Теперь у меня было то же самое с intelliJ. Вот как кто-то помог мне решить эту проблему в IntelliJ:
Меню => Вид => Окна инструментов => Проект Maven В значении spring_user => Запустить конфигурацию выберите чистую установку. Это должно сделать чистую установку, и после этого вы сможете увидеть классы ![enter image description here]()