2016-09-03 16 views
0

Я пытаюсь увидеть, как я могу добавить каталог и внешнюю банку в classpath при создании leiningen uberjar.leiningen uberjar - добавить внешнюю банку во время выполнения

Причина в том, что мне нужно распространять банку, но некоторые зависимости (например, драйвер jdbc) не могут быть скомпилированы в uberjar из-за ограничений лицензирования.

Я также хотел бы предоставить определенные внешние ресурсы, такие как свойства для ведения журнала и настройки, внешние по отношению к банке.

Обычно в java или spring boot я бы использовал соответствующую опцию командной строки, чтобы изменить путь к классам. Однако -cp не находит банку и т. Д.

Есть ли способ сделать это или соответствующий плагин? Заранее спасибо

ответ

1

Вы можете добавить банку в качестве ресурса в профиль: dev. Затем он добавляется в classpath. Профиль dev предназначен для локальной разработки и не упакован в uberjar.

:profiles { 
     :uberjar {:aot :all} 
     :dev {:resource-paths ["no-redist/commercial-jdbc-driver.jar"]}} 

В «производства» время с uberjar вам нужно установить вручную путь к классам:

java -cp no-redist/commercial-jdbc-driver.jar;your-app-uber-jar.jar main.namespace 

AFAIK при использовании -jar флаг, он использует зависимости в файле фляги, все, что связано и упоминается там. Комбинация -cp и -jar может не работать.

Другим способом обратиться к файлу не-распространяемой банка в банке манифест (META-INF/MANIFEST.MF):

Class-Path: no-redist/commercial-jdbc-driver.jar 

Java--jar ваша-приложение-убер-банка. jar будет искать банку в папке no-redist/commercial-jdbc-driver.jar в локальном каталоге. Добавьте это в leinigen как:

:manifest {"Class-Path" "no-redist/commercial-jdbc-driver.jar"} 
+0

Я понимаю это, но моя основная проблема заключается в том, как я могу заставить uberjar увидеть коммерческий драйвер. Всякий раз, когда я кладу кувшин, он не видит его. Если я использую параметр -cp, это будет проигнорировано загрузчиком, и я получаю ошибки класса, которые не были найдены. Подобно ресурсам, которые я попросил быть на пути к классам - он, кажется, не выглядит за пределами uberjar для чего-либо – ismoore999

+0

Обновленный ответ, чтобы быть более подробным для запуска uberjar без перераспределяемой банки – Gamlor

 Смежные вопросы

  • Нет связанных вопросов^_^