build clojure jar leiningen

build - Leiningen tiene problemas para construir un uberjar de trabajo



clojure (1)

Mi comprensión al leer los comentarios en ese tema es que su problema desaparecería si agrega lo siguiente a su project.clj

:uberjar-exclusions [#"foo.sf"]

donde foo.sf es el archivo .sf particular que desea ignorar del contenedor. Puede determinar esto ejecutando:

unzip -l BioClojure-1.0.0-SNAPSHOT-standalone.jar | grep -i -e "/.sf"

El comando zip sugerido elimina el archivo particular del archivo jar (que es del formato ZIP).

Estamos tratando de construir nuestro proyecto Clojure con Leiningen. Hemos logrado crear un uberjar haciendo lo siguiente:

condiciones previas:

  • El archivo project.clj enumera dependencias
  • :main my-project.core en project.clj
  • un archivo core.clj con una función -main
  • (:gen-class :main true) en core.clj

procedimiento:

  • corrió lein test ; completado sin fallas
  • corrió lein deps ; Completado satisfactoriamente
  • del directorio de project.clj: rain lein uberjar
  • Esto creó dos archivos jar: My-Project-1.0.0-SNAPSHOT-standalone.jar y My-Project-1.0.0-SNAPSHOT.jar.
  • corrió java -jar BioClojure-1.0.0-SNAPSHOT-standalone.jar , que resultó en esta excepción:

Excepción en el hilo "principal" java.lang.SecurityException: resumen de archivo de firma inválido para los atributos principales de Manifest

Mi investigación sobre este problema no ha sido fructífera. Aparentemente , es un problema conocido sin una buena solución. No entiendo las respuestas allí.

¿Qué tenemos que hacer para que nuestro uberjar funcione?

  • determinar cuál de nuestras dependencias está causando el problema?
  • eliminar dependencias de nuestro proyecto?
  • compilar el proyecto de otra manera?
  • parche leiningen?
  • use el comando sugerido: zip *-standalone.jar -d META-INF/DUMMY.SF (no tengo idea de qué hace esto)
  • hacer algo con :uberjar-exclusions en el archivo project.clj? (¿entonces qué?)

Lein y Java versiones:

$ lein version Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM

Actualización: ejecutar el comando sugerido da:

$ unzip -l BioClojure-1.0.0-SNAPSHOT-standalone.jar | grep -i -e "/.sf" 49911 08-27-09 15:57 META-INF/RCSB-PDB.SF 0 03-23-10 08:21 META-INF/maven/net.sf.alxa/ 0 03-23-10 08:21 META-INF/maven/net.sf.alxa/jlatexmath/ 929 03-23-10 08:20 META-INF/maven/net.sf.alxa/jlatexmath/pom.xml 115 03-21-10 14:01 META-INF/maven/net.sf.alxa/jlatexmath/pom.properties 175241 08-17-11 20:25 META-INF/SELFSIGN.SF 0 09-21-09 06:45 META-INF/maven/net.sf.opencsv/ 0 09-21-09 06:45 META-INF/maven/net.sf.opencsv/opencsv/ 5510 09-21-09 06:44 META-INF/maven/net.sf.opencsv/opencsv/pom.xml 106 09-21-09 06:45 META-INF/maven/net.sf.opencsv/opencsv/pom.properties