Подтвердить что ты не робот

Невозможно использовать 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 в путь к классам?

4b9b3361

Ответ 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) решение:

  1. Щелкните правой кнопкой мыши папку проекта
  2. Выберите Maven
  3. Выберите " Создать источники и обновить папки".

Затем 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