Невозможно использовать Intellij с сгенерированной исходной папкой - PullRequest
68 голосов
/ 02 марта 2011

Смежный вопрос Как настроить 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 в путь к классам?

Ответы [ 7 ]

108 голосов
/ 02 марта 2011

Вы можете просто изменить структуру проекта, чтобы добавить эту папку в качестве «исходного» каталога.

Структура проекта → Модули → Щелкните папку 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>
29 голосов
/ 18 октября 2017

Я использую Maven (приложение SpringBoot):

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

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

16 голосов
/ 30 ноября 2016

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

sourceSets {
    main {
        java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}
13 голосов
/ 11 марта 2016

Исправление

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

Именно поэтому мы можем установить Префикс пакета в исходных каталогах.


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

4 голосов
/ 02 марта 2011

Кто бы ни написал этот плагин, он облажался. Это не способ сделать это!

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

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


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

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

1 голос
/ 24 июля 2018

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

Меню => Вид => Инструменты Windows => Проект Maven В значении spring_user => Run Configuration выберите чистую установку. Это должно сделать чистую установку, и после этого вы сможете увидеть классы enter image description here

1 голос
/ 02 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...