У Java и Gradle разные исходные структуры для модулей? - PullRequest
1 голос
/ 16 марта 2019

Я видел, что в Gradle мы объявляем модуль как artifact/src/main/java/module-info.java, но в OpenJDK они объявляют его как src/com.group.artifact/module-info.java.Тогда в Jenkov у нас есть src/main/java/com.group.artifact/module-info.java.

Я в замешательстве, какую мне использовать?У меня есть проект Gradle, который содержит несколько подпроектов внутри.И я пытаюсь использовать подпроекты в качестве модулей.IntelliJ IDEA выдает ошибку, когда я использую метод Jenkov, и мне нужно переключиться на Gradle один.Это то же самое?

1 Ответ

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

OpenJDK и Gradle просто имеют разные соглашения для структурирования исходного кода.Поскольку вы используете Gradle (и, следовательно, плагин языка Java от Gradle), вы должны следовать его соглашениям.Плагин языка Java Gradle автоматически скомпилирует код в каталоге src/main/java.

Если у вас есть два модуля, com.example.moduleone и com.example.moduletwo, структура вашего проекта должна выглядеть следующим образом:

build.gradle
settings.gradle
com.example.moduleone
└──src
   └──main
      └──java
         ├──{PACKAGES_AND_CODE}
         └──module-info.java
com.example.moduletwo
└──src
   └──main
      └──java
         ├──{PACKAGES_AND_CODE}
         └──module-info.java

Не с использованием Gradle и компиляцией проекта самостоятельно с помощью javac -d out --module-source-path src -m com.example.moduleone,com.example.moduletwo, это должно выглядеть так:

src
├──com.example.moduleone
|  ├──{PACKAGES_AND_CODE}
|  └──module-info.java
└──com.example.moduletwo
   ├──{PACKAGES_AND_CODE}
   └──module-info.java

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

...