Отсутствие зависимостей при генерации-module-info-jdeps
Я пытаюсь запустить jdeps с помощью следующей команды:
jdeps --module-path modules --generate-module-info out com.demo.market.jar
мой com.demo.market.jar
зависит как от прикладных модулей, так и от автоматических модулей. Я поместил все зависимости в папку 'modules', но получил ошибку:
Error: missing dependencies
com.demo.market.platform.MarketPlace -> com.demo.client.wholesale.Client not found
com.demo.market.platform.MarketPlace -> com.demo.product.api.Product not found
com.demo.market.platform.MarketPlace -> com.demo.product.laptop.Laptop not found
com.demo.market.collector.ProductsCollector -> com.demo.logistic.DeliveryService not found
com.demo.market.collector.ProductsCollector -> com.demo.product.api.Product not found
Но когда я добавляю --add-modules
Работает нормально.
jdeps --module-path modules --add-modules com.demo.client,com.demo.product,com.demo.logistic --generate-module-info out com.demo.market.jar
Я делаю что-то неправильно? Я предполагал, что jdeps найдет все модули, а не добавит их вручную.
1 ответ
Когда вы выполните следующее:
jdeps --module-path modules --generate-module-info out com.demo.market.jar
Модули, которые разрешаются из каталога, являются наблюдаемыми модулями, которые в вашем случае не могут сделать это для набора корневых модулей.
По другой части вопроса -
jdeps --module-path modules --add-modules com.demo.client,com.demo.product,com.demo.logistic --generate-module-info . com.demo.market.jar
С другой стороны, добавление их явно гарантирует, что модули присутствуют в наборе корневых модулей.
В качестве альтернативы (из Системы модулей JEP261# вы можете попробовать использовать команду
jdeps --module-path modules --add-modules=ALL-MODULE-PATH --generate-module-info out com.demo.market.jar
В качестве последнего особого случая, как во время выполнения, так и во время соединения, если установлено значение ALL-MODULE-PATH, то все наблюдаемые модули, найденные в соответствующих путях модулей, добавляются в корневой набор. ALL-MODULE-PATH действителен как во время компиляции, так и во время выполнения. Это предусмотрено для использования инструментами сборки, такими как Maven, которые уже гарантируют, что все модули на пути к модулю необходимы. Это также удобное средство для добавления автоматических модулей в корневой набор.
Обратите внимание, что команды должны быть выполнены:
- Так же
jdeps
общий вывод в вопросе справедлив с-verbose:class
в идеале.