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

у собственный плагин для Leiningen, который поможет в развертывании функций AWS Lambda, написанных на Clojure. я используюaws-java-sdk-lambda версия1.11.145 который зависит от Джексона2.6.xконкретно2.6.5 IIRC.

Поскольку я пишу это как плагин, код выполняется в контексте Leiningen (т.е.:eval-in-leiningen true) и, AFAIK, подчиняется зависимостям самого Leiningen.

Это проблема, так как версия Leiningen, которую я использую (2.7.1) зависит от Чешира5.5.0 что, в свою очередь, зависит от Джексона2.5.3, Это приводит кNoSuchMethodError когда AWS SDK пытается позвонитьcom.fasterxml.jackson.databind.JavaType.isReferenceType(), НАСКОЛЬКО МНЕ ИЗВЕСТНО,jackson-core-2.6.5 (привлечено AWS) пытается позвонить вjackson-databind-2.5.3 (втягивается, косвенно, Чеширом). По крайней мере, так и происходит.

Первый вопрос: это известная проблема? Я не смог найти ничего, что прямо ссылалось бы на это на SO, Google или на первой странице проблем на странице Leiningen's GitHub (я не делал там исчерпывающий поиск). Второе: есть ли у кого-нибудь предложения по решению этой проблемы?:exclusions кажется очевидным выбором, но я не уверен, как можно указать исключение для чего-то, что сам Лейнинген использует как зависимость.

Ниже я включил простые спецификации проекта, чтобы воспроизвести ошибку:

плагинаproject.clj:

(defproject aws-plugin "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[com.amazonaws/aws-java-sdk-lambda "1.11.145"]]
  :eval-in-leiningen true)

Исходный код плагина:

(ns leiningen.aws-plugin
  (:import (com.amazonaws.services.lambda AWSLambdaClient
                                          AWSLambdaClientBuilder)))

(def aws-lambda-client (-> (AWSLambdaClient/builder) (.build)))

(defn aws-plugin
  "I don't do a lot, or anything at all."
  [project &]
  (println "Create Lambda"))

плагин пользователяproject.clj

(defproject aws-plugin-user "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.8.0"]]
  :target-path "target/%s"
  :plugins [[aws-plugin "0.1.0-SNAPSHOT"]]
  :profiles {:uberjar {:aot :all}})

Как только это настроено, запуститеlein install из каталога плагинов, а затем запуститеlein aws-plugin из каталога пользователей плагина. Это должно попытаться создать экземплярAWSLambdaClient что, в свою очередь, вызовет ошибку.

Ответы на вопрос(1)

Ваш ответ на вопрос