Модульный разделенный пакет JHipster Spring Boot

Я пытаюсь разбить приложение JHipster 5 (Spring Boot 2) на модули, и у меня возникла проблема с разделением пакета.

В module-info.java у меня есть следующие конфликтующие автоматические модули:

requires problem.spring.web;
requires problem;
requires jackson.datatype.problem;

Когда я создаю проект с помощью Maven, я получаю несколько ошибок из-за конфликтующего имени пакета org.zalando.problem, например:

error: the unnamed module reads package org.zalando.problem from both problem and jackson.datatype.problem
error: module problem.spring.web reads package org.zalando.problem from both jackson.datatype.problem and problem

Я хотел бы знать, как я могу решить эту проблему. Придется ли мне ждать, пока сторонняя библиотека тоже будет модульной? Как бы лучше разрешить этот конфликт?

эта статья немного объясняет, как решить проблемы с разделением пакетов. Я применил его, чтобы решить проблему разделения пакета между jsr305 и java.xml.ws.annotation, используя аргумент --patch-module при сборке, как объяснено здесь. Однако проект не скомпилировался, когда я попробовал то же самое для этих пакетов.

Исходный код этого проекта доступен на GitHub

Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
0
334
1

Ответы 1

Если вы хотите использовать JAR-файлы, которые разделяют пакет на модули, --patch-module - единственный способ, но он трудный. Помимо исправления, вам также необходимо создать остальную часть графа модуля. Допустим, вы исправляете модуль мегакорпорация содержимым запускать, а затем:

  • вы должны заставить мегакорпорация читать все зависимости запускать с --add-reads
  • вы должны заставить все модули, которые используют запускать, читать мегакорпорация с --add-reads
  • вы должны убедиться, что запускать не находится на пути к модулю

Это может быть довольно сложно, особенно если вы сражаетесь с Maven по пути. Вы уверены, что нет возможности просто объединить два артефакта?

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

Другие вопросы по теме