Я работаю над проектом, который имеет необычную структуру.Он построен не системой сборки, а IDE IntelliJ.Я знаю, что такой подход вообще беден и хрупок.Но я должен с этим смириться.
Ключевой особенностью IDEA является возможность назначать произвольный пакет для каталога.И проект, над которым я работаю, сильно зависит от этой особенности (проект очень сложный и древний).
Я создал упрощенный проект только для иллюстрации.Например, можно сохранить два каталога reports
и database
, принадлежащих пакету com.mycompany.internal
, и назначить пакет com.mycompany.external
каталогу rest
:
![Project structure in IDEA](https://i.stack.imgur.com/1r7qm.png)
Находясь на диске, структура выглядит следующим образом:
└───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?