Мы поддерживаем большое количество сервисов SpringBoot, созданных с помощью Maven. Многие из этих сервисов имеют зависимости, которые содержат только классы JAXB, используемые для маршаллинга и демаршаллинга XML. Все они были созданы с использованием пакетов «javax». Сейчас мы обновляемся до SpringBoot 3, для которого теперь требуются пакеты «jakarta».
В конечном итоге исходный код этих зависимостей будет преобразован, но это произойдет не быстро. Тем временем мы пытаемся использовать Eclipse «transformer-maven-plugin» для преобразования. Этот плагин концептуально прост, но есть один аспект, который представляет некоторые трудности. Сначала я не мог понять, как преобразовать зависимости, чтобы преобразованные классы были доступны во время компиляции. Без этого некоторый код в службе не скомпилируется.
В конце концов я понял, что могу запустить плагин преобразователя на этапе «генерации исходных кодов», а затем использовать «maven-antrun». -plugin» для извлечения преобразованных jar-файлов в «цель/классы». Когда я это делаю, все ошибки компиляции устраняются.
Однако после этапа компиляции, когда запускается цель «переупаковки» плагина Spring-boot-maven, происходит сбой с такая ошибка:
Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.2.5:repackage (default) on project ...:
Execution default of goal org.springframework.boot:spring-boot-maven-plugin:3.2.5:repackage failed:
Source must refer to an existing file, got C:\...\target\classes
Я никогда раньше не видел этого сообщения об ошибке. Ссылка на «цель/классы» в конце позволяет с уверенностью предположить, что это связано с тем, что я сделал с плагином преобразователя.
Мне все время интересно, есть ли другое решение проблемы «отсутствующих ссылка» для плагина трансформера. Сброс преобразованных классов в целевые/классы ДО этапа компиляции показался мне странным, но я обнаружил, что это работает, по крайней мере, на этапе компиляции. Есть ли лучший способ сделать эти преобразованные классы доступными во время компиляции, помимо помещения их в целевые классы?
Вот несколько выдержек из того, что я сделал.Это часть определения плагина-трансформера:
org.eclipse.transformer
transformer-maven-plugin
1.0.0
true
false
${project.build.directory}/transformed
true
thing
generate-sources
jar
...
thing
1.0.55
jar
thing
Для каждой из нескольких зависимостей необходимо преобразовать несколько блоков выполнения.
Это отрывок из определения плагина antrun, который извлекает банки в целевые/классы:
org.apache.maven.plugins
maven-antrun-plugin
1.8
prepare
process-resources
run
Это наше текущее определение плагина Spring-boot-maven:
org.springframework.boot
spring-boot-maven-plugin
3.2.5
repackage
fat
ZIP
true
ZIP
true
Подробнее здесь: https://stackoverflow.com/questions/790 ... r-to-an-ex
Поместив преобразованные классы в цель/классы, получите ошибку «Источник должен ссылаться на существующий файл» из цели ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Взять строки по данным строк из Excel и поместив их в полезную нагрузку
Anonymous » » в форуме Javascript - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Можно ли расширить существующий REST API другим путем, расширив существующий интерфейс?
Anonymous » » в форуме JAVA - 0 Ответы
- 68 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Можно ли расширить существующий REST API другим путем, расширив существующий интерфейс?
Anonymous » » в форуме JAVA - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-