Как сказать проекту скачать внутреннюю зависимость? - PullRequest
0 голосов
/ 22 марта 2019

У меня есть банка.Это не толстая банка.Он содержит только мои занятия.Но мой JAR зависит от Azure-Servicebus.Я не хочу добавлять лазурный сервисный автобус в мою банку и делать из нее толстую банку.

Я просто хочу, чтобы, когда проект добавляет мой jar-файл, он автоматически загружал службу Azure-Servicebus.

Я использую Maven для создания фляги (без зависимостей).

Как мне это указать?Возможно ли это?

edit:

Я хочу, чтобы проект, который добавляет мой jar-файл в качестве зависимости, должен загружать проект azure-servicebus БЕЗ необходимости добавления зависимости для azure-servicebus или меня.Servicebus внутри файла JAR.

Ответы [ 3 ]

1 голос
/ 22 марта 2019

Если я правильно вас понимаю, структура, о которой вы говорите:

some-project зависит от your-jar, которое зависит от azure-servicebus.

Если some-project объявляет зависимость Maven от your-jar, тогда она автоматически получает azure-servicebus как зависимость, потому что Maven выполняет транзитивное разрешение зависимостей. Поэтому, когда вы создаете some-project, azure-servicebus будет на пути к классам, и если some-project - это WAR / EAR, то azure-servicebus будет частью этой WAR / EAR.

1 голос
/ 22 марта 2019

Предполагая, что у вас уже есть структура maven в вашем проекте, вы бы добавили следующую строку в pom.xml:

<!-- https://mvnrepository.com/artifact/com.microsoft.azure/azure-servicebus -->
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-servicebus</artifactId>
    <version>1.2.12</version>
</dependency>

Если у вас нет структуры maven, вам нужно ее сгенерировать. Обычно это может быть достигнуто в используемой вами среде IDE.

Если вы хотите, чтобы полученный jar не содержал служебную шину, вы можете сделать зависимость только своего рода компиляцией, что будет более или менее дубликатом этого вопроса: Есть ли Maven "только для компилятора "область действия для артефактов зависимости .

Однако это будет означать, что ваша целевая среда выполнения должна каким-то образом включать определение классов (возможно, с помощью ключа -cp).

Из моего POV: если вам нужна зависимость для запуска вашей программы, включите ее, если лицензия позволяет это.

0 голосов
/ 24 марта 2019

Я задал этот вопрос, не зная чего-то очень важного.

Когда jar помещается в артефакт, рядом с ним также должен быть размещен соответствующий файл .pom (вне каталога). Этот файл pom сообщает зависимому проекту, что банку, от которой вы зависите, требуются те или иные зависимости.

Этот ответ помог мне понять:

https://stackoverflow.com/a/50002072/4828463

Спасибо всем, кто пытался.

...