#java #maven #gradle #java-platform-module-system
Вопрос:
Я сделал минималистичный проект java gradle для тестирования модулей java 9.
Я сделал только 1 модуль и попытался протестировать его в зависимости от стороннего модуля. Но я продолжаю получать ошибку, когда пытаюсь построить или запустить проект:
module not found: commons.validator
вот мои файлы:
Demo.java»
public class Demo {
public static void main(String[] args) {
boolean result = EmailValidator.getInstance().isValid("abcd");
System.out.println(result);
}
}
module-info.java:
module auth.server.main {
requires commons.validator;
}
сборка.сортировка:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
// for email validation
implementation 'commons-validator:commons-validator:1.7'
}
/*this is to let gradle infer the locations of the modules*/
java {
modularity.inferModulePath.set(true)
}
Что не так и как это решить?
Комментарии:
1. Учитывая как изменение
groupId
соглашения Apache, так и наличие проверки компонентов, я был бы удивлен, еслиcommons-validator:1.7
бы был достаточно новым для объявления модулей. По какой причине вы ожидаетеcommons.validator
, что будете существовать?2. @chrylis-cautiouslyoptimistic — Коммонс.валидатор автоматические название модуля, вы можете найти его с помощью команды
jar --file=<filepath> --describe-module
, а затем применяет правила именования, чтобы извлечь имя модуля библиотека работает хорошо, но когда я определяю модуль-Инфо в моем проекте, он перестает работать, то же самое происходит с Ломбоке, а также в среде IDE (intellij идея конечной) не находит также
Ответ №1:
Это может быть простым способом.
plugins {
id 'java'
id "org.javamodularity.moduleplugin" version "1.1.1"
}
repositories {
mavenCentral()
}
dependencies {
implementation 'commons-validator:commons-validator:1.7'
}
Проверьте это : https://github.com/java9-modularity/gradle-modules-plugin
Комментарии:
1. Это сработало, но только после того, как я создал новый проект и скопировал в него старые файлы, я не знаю почему, но, по крайней мере, это сработало. Заставить gradle работать с модулями, не говоря уже о системе модулей java, — чертовски сложная задача.