2014-03-05 157 views
11

我越来越如何解决leiningen:AOT警告

Warning: specified :main without including it in :aot. 
If you only need AOT for your uberjar, consider adding :aot :all into your 
:uberjar profile instead. 

这里是我的project.clj

(defproject korma-test "0.1.0-SNAPSHOT" 
    :description "korma db test" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.5.1"] 
       [korma "0.3.0-RC5"] 
       ] 
    :main korma-test.core) 

,这里是core.clj

(ns korma-test.core 
    (require [korma.db :as kdb]) 
    (require [clojure.string :as str]) 
    (:use [clojure.tools.cli]) 
    (:import java.util.Date) 
    (:gen-class) 
) 
; Parses for options passed in on the command line. 

(defn parse-opts 
    "Using the newer cli library, parses command line args." 
    [args] 
    (cli args 
     (optional ["-host" "Informix host" :default "localhost"]) 
     (optional ["-port" "Informix host's service port" :default "1498"]) 
     (required ["-username" "user name"]) 
     (required ["-password" "password"]) 
     (optional ["-database" "Informix host's database" :default "stores7/ministores.dbs" ]))) 


(defn -main 
    [& args] 
    (if (= 0 (count args)) 
    (println "Usage: korma-test --host <host-name> --port <port-num> --database <db-name>") 
    (let [opts (parse-opts args) 
      start-time (str (Date.))] 
      (def db-config {:classname "com.informix.jdbc.IfxDriver" 
          :subprotocol "postgresql" 
          :subname (format "//%s:(:port opts)/%s" 
              (:host opts) 
              (:database opts)) 
          :user (:user opts) 
          :password (:password opts)}) 

      (kdb/defdb db db-config) 

    (println opts)))) 

我很困惑至于在哪里放:不满足警告。

+0

您正在运行什么版本的leiningen以及何时收到警告? – KobbyPemson

+0

@KobbyPemson我没有发布所有的core.clj。我得到这个错误警告:指定:主要不包括它在:AOT。 隐式AOT:main将在Leiningen 3.0.0中被删除。 如果你只需要AOT为你的uberjar,考虑增加:aot:所有到你的 :uberjar配置文件。即使有主要功能。 – octopusgrabbus

回答

11

我可以发誓,它的工作没有前警告,但在任何情况下,你现在需要添加一个:AOT指令在project.clj 见here

以下工作

project.clj

(defproject korma-test "0.1.0-SNAPSHOT" 
    :description "korma db test" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.5.1"] 
       [korma "0.3.0-RC5"] 
       [org.clojure/tools.cli "0.3.1"]] 
    :main korma-test.core 
    :aot [korma-test.core]) 

core.clj

(ns korma-test.core 
    (:require [korma.db :as kdb]) 
    (:require [clojure.string :as str]) 
    (:require [clojure.tools.cli :as c]) 
    (:import java.util.Date) 
    (:gen-class)) 

; Parses for options passed in on the command line. 

    (defn parse-opts 
     "Using the newer cli library, parses command line args." 
     [args] 
     (c/cli args 
      [ ["-host" "Informix host" :default "localhost"] 
      ["-port" "Informix host's service port" :default "1498"] 
      ["-username" "user name"] 
      ["-password" "password"] 
      ["-database" "Informix host's database" :default "stores7/ministores.dbs" ]])) 


(defn -main 
    [& args] 
    (if (= 0 (count args)) 
    (println "Usage: korma-test --host <host-name> --port <port-num> --database <db-name>") 
    (let [opts (parse-opts args) 
      start-time (str (Date.)) 
      db-config {:classname "com.informix.jdbc.IfxDriver" 
          :subprotocol "postgresql" 
          :subname (format "//%s:(:port opts)/%s" 
              (:host opts) 
              (:database opts)) 
          :user (:user opts) 
          :password (:password opts)}] 
      (kdb/defdb db db-config) 
    (println opts))))