Como faço exclusões para dependências extraídas por leiningen ao escrever um plug-in?

Estou escrevendo um plug-in personalizado para Leiningen que ajudará na implantação de funções do AWS Lambda escritas no Clojure. estou a usaraws-java-sdk-lambda versão1.11.145 que depende de Jackson2.6.xespecificamente2.6.5 IIRC.

Como estou escrevendo isso como um plug-in, o código está sendo executado no contexto de Leiningen (ou seja,:eval-in-leiningen true) e, AFAIK, está sujeito às dependências da própria Leiningen.

Este é um problema, pois a versão de Leiningen que estou executando (2.7.1) depende de Cheshire5.5.0 que, por sua vez, depende de Jackson2.5.3. Isso resulta em umNoSuchMethodError quando o AWS SDK tenta chamarcom.fasterxml.jackson.databind.JavaType.isReferenceType(). ATÉ ONDE SEI,jackson-core-2.6.5 (puxado pela AWS) está tentando entrarjackson-databind-2.5.3 (puxado indiretamente por Cheshire). Pelo menos é o que parece estar acontecendo.

Primeira pergunta: este é um problema conhecido? Não consegui encontrar nada que o referencia diretamente no SO, no Google ou na primeira página de problemas na página do GitHub de Leiningen (não fiz uma pesquisa exaustiva por lá). Segundo: alguém tem alguma sugestão para solucionar esse problema?:exclusions parece a escolha óbvia, mas não tenho certeza de como especificar uma exclusão para algo que a própria Leiningen está utilizando como dependência.

Abaixo, incluí especificações simples do projeto para reproduzir o erro:

do pluginproject.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)

código fonte do plugin:

(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"))

usuário do pluginproject.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}})

Uma vez configurado, executelein install do diretório do plug-in e, em seguida, executelein aws-plugin do diretório de usuários do plug-in. Isso deve tentar criar uma instância deAWSLambdaClient que, por sua vez, acionará o erro.

questionAnswers(1)

yourAnswerToTheQuestion