Назначить произвольный каталог для пакета в Maven / Gradle - PullRequest
1 голос
/ 15 марта 2019

Я работаю над проектом, который имеет необычную структуру.Он построен не системой сборки, а IDE IntelliJ.Я знаю, что такой подход вообще беден и хрупок.Но я должен с этим смириться.

Ключевой особенностью IDEA является возможность назначать произвольный пакет для каталога.И проект, над которым я работаю, сильно зависит от этой особенности (проект очень сложный и древний).

Я создал упрощенный проект только для иллюстрации.Например, можно сохранить два каталога reports и database, принадлежащих пакету com.mycompany.internal, и назначить пакет com.mycompany.external каталогу rest:

Project structure in IDEA

Находясь на диске, структура выглядит следующим образом:

└───src
    ├───database
    ├───reports
    └───rest

Насколько я знаю, системы сборки, такие как Maven и Gradle, могут обрабатывать несколько исходных корней.Например, в Gradle можно указать несколько каталогов:

sourceSets {
    main {
        java {
            srcDirs 'src'
            srcDirs 'src1'
            srcDirs 'src2'
        }
    }
 }

Но внутри src Gradle ожидает следующую иерархию (в соответствии с пакетами Java):

└───src
    └───com
        └───mycompany
            ├───internal
            └───external

Кажется, что тамнет способа изменить такое поведение Maven / Gradle "из коробки" ... Ну, я могу использовать Ant в качестве альтернативы (он довольно гибкий), но такой подход будет слишком императивным и утомительным.Или мне нужно написать новый плагин для Maven / Gradle, который будет генерировать файлы проекта IDEA?

1 Ответ

2 голосов
/ 18 марта 2019

Компилятору Java буквально нет дела до расположения источников в папках, соответствующих именам их пакетов.

Так что единственное, что вам нужно сделать в Gradle, это правильно настроить исходные каталоги, например:

sourceSets {
    main {
        java {
            srcDirs "src/database", "src/reports", "src/rest"
        }
    }
}

И затем следуйте документации IntelliJ для выполнения импорта.

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