Невозможно использовать Intellij с созданной папкой источников


смежный вопрос Как настроить IntelliJ IDEA и / или Maven для автоматического добавления каталогов с исходным кодом Java, созданным с помощью jaxb2-maven-plugin?

у меня есть пользовательский плагин, который генерирует источники под target/generated-sources (обратите внимание, что здесь нет имени инструмента). Поэтому я получаю такие источники, как target/generated-sources/com/mycompany...так далее.

этот формат не может быть изменен вообще, поэтому я смогу настроить Intellij на добавление его в качестве исходной папки. На данный момент я вижу, что Intellij добавил target/generated-sources/com как исходная папка.

обратите внимание, что у меня нет возможности настроить плагин !

обновление 1: я не согласен с тем, что я должен поместить мои сгенерированные источники в папку имени инструмента. Это может быть хорошая конвенция, но если у меня есть только один генератор, мне не нужно его туда ставить? Опять же, в моем пом.xml у меня есть resources раздел, который четко указывает, что target/generated-sources следует рассматривать как исходную папку. Это прекрасно работает в Затмение, поэтому я понятия не имею, почему Intellij не будет уважать мои настройки.

TL; DR - > когда я ставлю target/generated-sources в разделе ресурса pom.xml почему Intellij слишком усердно добавляет target/generated-sources/com в classpath?

7 54

7 ответов:

вы можете просто изменить структуру проекта, чтобы добавить эту папку в папке "источник".

Структура Проекта → Модули → выберите .

или:

<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>

С помощью gradle настройки проекта будут очищены при каждом обновлении настроек gradle. Вместо этого вам нужно добавить следующие строки (или аналогичные) в вашей сборке.gradle, я использую Котлин так:

sourceSets {
    main {
        java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}

Я использую Maven (SpringBoot приложение) для этого, решение

  1. щелкните правой кнопкой мыши папку проекта
  2. выберите Maven
  3. выберите Создание Источников И Обновление Папок

затем Intellij автоматически импортирует сгенерированные источники в проект.

исправления

на Структура Проекта -модули -Исходные Папки и найти target/generated-sources/antlr4/com/mycompany - click изменить свойства и set префикс пакета до com.mycompany.

именно по этой причине мы можем установить префикс пакета на источнике dirs.


разные, но проблемы, связанные здесь

кто бы ни написал этот плагин облажался большое время. Это не способ сделать это!

любой обходной путь был бы огромным взломом, чтобы разработчик плагина знал о своей ошибке.

извините, это единственное, что нужно сделать.


хорошо вот Хак, сразу после выполнения вашего плагина, используйте плагин 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> задач.

но если плагин добавляет папку в качестве исходной папки, то вы облажались.

может быть, вы можете добавить шаг к этапу создания источников, который перемещает папку?

У меня была такая же проблема с Eclipse пару месяцев назад при импорте моего проекта. Теперь у меня было то же самое с intelliJ. Вот как кто-то помог мне решить эту проблему в IntelliJ:

Menu = > View = > Tools windows => Maven Project В значении spring_user => Run Configuration выберите clean install. Это должно сделать чистую установку и после этого вы сможете запустить тесты.

enter image description here