2015-10-26 2 views
1

Lorsque je tente de créer un fichier de guerre via la commandeA défaut de créer un fichier WAR de Immutant

lein with-profile prod immutant war 

Je reçois une erreur indiquant:

Une erreur s'exécuter la tâche « immutant » avec le profil (s): 'prod' Uberjar parce pot échoué abandon: Aucune mise en œuvre de la méthode: : comme fichier de protocole: # 'clojure.java.io/Forçages trouvé pour la classe: java.lang.Character

Mon fichier de projet est comme ci-dessous

(defproject company/project-name "0.0.2-SNAPSHOT" 
    :description "project description" 
    :url "http://www.comapny-url.com" 
    :license {:name "company name license" 
      :url "http://www.company-url.com"} 
    :min-lein-version "2.4.3" 
    :java-opts ["-Xmx5g" "-server" "-XX:-OmitStackTraceInFastThrow"] 
    :exclusions [org.clojure/clojure] 
    :dependencies [[company/lib-name1 "1.2.9" :exclusions [com.taoensso/encore]] 
       [company/lib-name2 "1.1.1"] 
       [org.clojure/clojure "1.6.0"] 
       [org.clojure/data.zip "0.1.1"] 
       [org.clojure/tools.nrepl "0.2.10"] 
       [com.palletops/leaven "0.3.1"] 
       [com.github.kyleburton/clj-xpath "1.4.5"] 
       [metrics-clojure "2.5.1"]] 
    :java-source-paths ["java/src"] 
    :javac-options ["-target" "1.7" 
        "-source" "1.7" "-Xlint:-options" 
        "-cp" "resources/jars/jms-lib.jar:resources/jars/clojure-1.6.0.jar:resources/jars/log4j-1.2.17.jar" 
        "-d" "resources/classes"] 
    :profiles {:dev {:source-paths ["dev"] 
        :dependencies [[org.clojure/tools.namespace "0.2.11"]] 
        :plugins [[lein-package "2.1.1"] 
          [lein-marginalia "0.7.1"]]} 
      :prod {:source-paths "prod" 
        :main prod}} 
    :prep-tasks ["javac" "compile"] 
    :resource-paths ["resources/classes"] 
    :plugins [[lein-package "2.1.1"] 
      [lein-immutant "2.0.1"]] 
    :immutant {:war {:resource-paths ["war-resources"]} 
      :nrepl {:port 8183 
        :host "0.0.0.0" 
        :interface "0.0.0.0" 
        :start? true}} 
    :hooks [leiningen.package.hooks.deploy leiningen.package.hooks.install] 
    :package {:skipjar true 
      :autobuild true 
      :reuse false 
      :artifacts [{:build "with-profile prod immutant war --name=%p%v%t" :extension "war"}]} 
    :uberjar-exclusions [#"(?i)^META-INF/[^/]*\.SF$"] ;; Eliminate the signing code from the uberjar 
    :repositories ^:replace [["nexus" {:url "comapny.respository.net"}]]) 

Le profil de prod est disposé comme si

(ns prod 
     (:require 
     [company.lib-name3 
     [debug :as debug] 
     [system :refer (go)]]) 
    (:gen-class)) 

(defn -main 
    "Initialize and start the app as a war" 
    [] 
    (go)) 

Je peux construire un uberjar si j'utilise mon profil dev qui est posé comme ceci:

(ns user 
    "Tools for interactive development with the REPL. This file should 
    not be included in a production build of the application." 
    (:require [clojure.java.io :as io] 
     [clojure.java.javadoc :refer (javadoc)] 
     [clojure.pprint :refer (pprint)] 
     [clojure.reflect :refer (reflect)] 
     [clojure.repl :refer (apropos dir doc find-doc pst source)] 
     [clojure.set :as set] 
     [clojure.string :as str] 
     [clojure.test :as test] 
     [clojure.tools.namespace.repl :refer (refresh refresh-all)] 
     [company.lib-name3 
     [debug :as debug] 
     [system :refer (go)]])) 

(defn -main 
    [] 
    (go)) 
+0

mis à jour avec mon profil dev qui ne construit à une guerre – jrahme

Répondre

1

les chemins source dans le profil prod de mon fichier project.clj besoin d'être dans un vecteur, ne pas être juste une chaîne.

:profiles {:dev {:source-paths ["dev"] 
        :dependencies [[org.clojure/tools.namespace "0.2.11"]] 
        :plugins [[lein-package "2.1.1"] 
          [lein-marginalia "0.7.1"]]} 
      :prod {:source-paths ["prod"] 
        :main prod}} 

au lieu de

:profiles {:dev {:source-paths ["dev"] 
        :dependencies [[org.clojure/tools.namespace "0.2.11"]] 
        :plugins [[lein-package "2.1.1"] 
          [lein-marginalia "0.7.1"]]} 
      :prod {:source-paths "prod" 
        :main prod}}