2016-10-08 2 views
1

Я использую Spring Boot 1.4.1 с Gradle 3.1. Модуль, в который применяется плагин Spring Boot, создает свою собственную банку с заданием jar, а также имеет «жирную» банку, созданную с помощью bootRepackage. Однако классы из этого модуля находятся в BOOT-INF/classes, но я хотел бы, чтобы они были в отдельной банке в BOOT-INF/lib. Как это сделать?Spring Boot - классы приложений пакета как банка в BOOT-INF/lib

EDIT: Я знаю, что могу переместить код в отдельный модуль, но по разным причинам я не могу сделать такой раскол (если нет другого пути). Я ищу одномодульное решение, если оно существует.

+0

Почему вы не хотите, чтобы классы находились в 'BOOT-INF/classes'? –

+1

Из-за этого: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#jersey-classpath-scanning-limitations. Предлагаемое решение заключается в том, чтобы упаковать классы приложений в виде банки, распаковать их из толстой банки, а затем сканирование Джерси снова будет работать. – wujek

ответ

1

Вам необходимо настроить multi-project build и переместить все ваши связанные с Джерси классы в отдельный проект. Затем вы можете зависеть от этого нового проекта в проекте Spring Boot, используя зависимость project. Например:

dependencies { 
    compile project(':jersey-endpoints') 
} 
+1

Yup, я знаю об этом, но надеялся, что есть более простой способ, тем более, что документация предлагает это сделать. Какова была причина для введения такого переломного изменения для многих (по крайней мере, я знаю о нескольких проектах, имеющих проблемы)? Имеет ли новый план на самом деле преимущества, необходимые для изменения? – wujek

+0

Если вы уже знаете один подход, который отвечает на ваш вопрос, тогда было бы неплохо сказать об этом в вашем вопросе. Что за трата времени. –

+0

Вы правы, извините, я обновил вопрос. Тем не менее, было бы неплохо, если бы в документации упоминалось, что такое подходы, это сэкономит еще больше времени. – wujek