Clojure 为什么lein ring uberwar不包括主清单属性
当我调用java-jar my-application.war时 使用lein ring uberware后 我在my-app.war中收到一个没有主清单属性的响应 这是我的密码: 下面的命名空间提供了所需的:gen类和-main函数:Clojure 为什么lein ring uberwar不包括主清单属性,clojure,web-deployment,leiningen,Clojure,Web Deployment,Leiningen,当我调用java-jar my-application.war时 使用lein ring uberware后 我在my-app.war中收到一个没有主清单属性的响应 这是我的密码: 下面的命名空间提供了所需的:gen类和-main函数: (ns nutrif.core (:require [ring.middleware.params] [ring.middleware.resource :refer [wrap-resource]] [ri
(ns nutrif.core
(:require [ring.middleware.params]
[ring.middleware.resource :refer [wrap-resource]]
[ring.adapter.jetty]
[clojure.java.io :as io])
(:gen-class))
(defn handler [request]
{:status 200
:header {"Content-Type" "text/html"}
:body (io/input-stream (io/resource "public/index.html"))})
(def app
(wrap-resource handler "public"))
(defn -main
[& [port]]
(let [port (Integer. (or port
(System/getenv "PORT")
8080))]
(ring.adapter.jetty/run-jetty #'app {:port port
:join? false})))
下面是my project.clj,它指向带有-main函数的名称空间。我错过了什么
(defproject nutrif "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.6.0"]
[ring "1.3.0"]
[ring/ring-jetty-adapter "1.3.0"]]
:plugins [[lein-ring "0.8.11"]]
:dev-dependencies [[ring-serve "0.1.2"]
[javax.servlet/servlet-api "2.5"]]
:ring {:handler nutrif.core/app
:resource-paths [resources public]}
:main nutrif.core
:aot [nutrif.core])
如果你想把它作为一个独立的应用程序运行,你需要创建一个uberjar,而不是通过ring创建一个uberwar。uberwar用于通过应用服务器进行部署。lein uberjar可以工作,因此我假设过程是在我的服务器上加载my-app.jar并使用lein trampoline调用java-jar my-app,这可能是另一种方法,然而,my-app.war方法允许我在一台服务器上运行多个应用程序,它还允许开发人员使用tomcat或jetty设置服务器环境变量,因此我仍然需要解决my-app.war没有打包我的主要功能的问题。我没有看到任何迹象表明uberwar也应该作为独立jar运行。虽然我不怀疑有可能创造一个,但我也不希望莱恩·林创造一个。蹦床是怎么回事?使用uberjar或uberwar,您甚至不应该在服务器上安装lein,您应该构建一个工件,部署它,并直接使用您选择的容器或java运行它。关于运行多个应用程序,最好使用类似nginx的东西,为每个路由/子站点配置正确的端口。设置环境变量非常简单,比正确配置servlet容器容易得多。lein trampoline将启动my-app.jar文件,而无需启动lein jvm来管理lein任务,然而,为了启动my-app.jar文件,我所做的是调用java-jar my-app.jar&在后台运行该任务,但是,这仍然不能解决.war文件问题。