如何将非Maven代码添加到bootclj/boot中?
我努力了。然后,我尝试使用复制相同的功能。但是,我不知道如何在启动项目中包含GoogleAppEngine(非Maven)代码。任何帮助我度过这一关的人都将不胜感激 以下所有代码 这是当前正在进行的如何将非Maven代码添加到bootclj/boot中?,maven,google-app-engine,clojure,leiningen,boot-clj,Maven,Google App Engine,Clojure,Leiningen,Boot Clj,我努力了。然后,我尝试使用复制相同的功能。但是,我不知道如何在启动项目中包含GoogleAppEngine(非Maven)代码。任何帮助我度过这一关的人都将不胜感激 以下所有代码 这是当前正在进行的项目。clj (defproject clojure-gae "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse
项目。clj
(defproject clojure-gae "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.7.0"]
[ring "1.4.0-RC2"]
[compojure "1.3.4"]
[com.google.appengine/appengine-api-1.0-sdk "1.9.31"]]
:plugins [[lein-ring "0.9.6" :exclusions [org.clojure/clojure]]]
:ring {:handler clojure-gae.core/app}
:profiles {:dev
{:dependencies
[[com.google.appengine/appengine-api-stubs "1.9.31"]
[com.google.appengine/appengine-local-runtime "1.9.31"]
[com.google.appengine/appengine-local-runtime-shared "1.9.31"]]}})
下面是我正在处理的当前已损坏的build.boot
,它基于以前的project.clj
(set-env!
:source-paths #{"src"}
:resource-paths #{"assets"}
:dependencies '[[compojure "1.3.4"]
[com.google.appengine/appengine-api-stubs "1.9.31"]
[com.google.appengine/appengine-local-runtime "1.9.31"]
[com.google.appengine/appengine-local-runtime-shared "1.9.31"]
[org.clojure/clojure "1.7.0"]
[pandeiro/boot-http "0.7.1-SNAPSHOT" :scope "test"]
[ring "1.4.0-RC2"]])
(require
'[pandeiro.boot-http :refer :all])
(task-options!
pom {:project "clojure-gae"
:version "0.1"}
jar {:main 'clojure_gae.core
:manifest {"Description" "A Clojure Application on Google App Engine"}}
repl {:init-ns 'clojure-gae.core}
serve {:handler 'clojure-gae.core/app
:reload true})
(def DEV_DEPENDENCIES '[])
(deftask dev
"Profile for doing local development"
[]
(set-env! :dependencies #(reduce conj % DEV_DEPENDENCIES))
(comp
(serve)))
它失败了
bash$ boot dev
2016-01-18 21:02:01.826:INFO::clojure-agent-send-off-pool-0: Logging initialized @5139ms
clojure.lang.ExceptionInfo: java.lang.ClassNotFoundException: com.google.appengine.api.datastore.DatastoreServiceFactory, compiling:(clojure_gae/core.clj:1:1)
data: {:file
"/var/folders/f8/brrq5_n902jdb7m3bb8vsvsh0000gn/T/boot.user2792359634710984639.clj",
:line 27}
java.util.concurrent.ExecutionException: java.lang.ClassNotFoundException: com.google.appengine.api.datastore.DatastoreServiceFactory, compiling:(clojure_gae/core.clj:1:1)
clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: com.google.appengine.api.datastore.DatastoreServiceFactory, compiling:(clojure_gae/core.clj:1:1)
java.lang.ClassNotFoundException: com.google.appengine.api.datastore.DatastoreServiceFactory
...
clojure-gae.core/eval1150/loading--auto-- core.clj: 1
clojure-gae.core/eval1150 core.clj: 1
...
clojure.core/load/fn core.clj: 5866
clojure.core/load core.clj: 5865
...
clojure.core/load-one core.clj: 5671
clojure.core/load-lib/fn core.clj: 5711
clojure.core/load-lib core.clj: 5710
...
clojure.core/apply core.clj: 632
clojure.core/load-libs core.clj: 5749
...
clojure.core/apply core.clj: 632
clojure.core/require core.clj: 5832
...
pandeiro.boot-http.util/resolve-sym util.clj: 4
pandeiro.boot-http.impl/ring-handler impl.clj: 66
pandeiro.boot-http.impl/server impl.clj: 102
...
clojure.core/eval core.clj: 3081
boot.pod/eval-in* pod.clj: 369
...
boot.pod/eval-in* pod.clj: 372
pandeiro.boot-http/eval85/fn/fn boot_http.clj: 51
...
clojure.core/deref core.clj: 2206
pandeiro.boot-http/eval85/fn/fn/fn boot_http.clj: 83
boot.core/run-tasks core.clj: 794
boot.core/boot/fn core.clj: 804
clojure.core/binding-conveyor-fn/fn core.clj: 1916
...
显然,
boot
不知道如何获取com.google.appengine
代码。在lein
的世界中,有leinlocalrepo安装…
关于如何将非Maven项目安装到本地存储库中的步骤。似乎appenginejar仍然应该在我的本地存储库中,但boot似乎看不到它们。如何使appengine jar在我的启动项目中可见?必须从类路径可见jar
。
这与这个问题类似:
但是对于引导,所以将位置添加到行:资源路径#{“资产”}
应该可以工作
例如,如果您的JAR位于“lib”中,那么前一行应该是这样的::资源路径{“资产”“lib”}
注意:在您的情况下,使用leinlocalrepo
安装这些应用程序应该仍然有效。但是boot
有一个内置的install
任务
从命令行这样使用:boot install-f warp-0.1.0.jar-p tailrecursion/warp“嗯,您缺少依赖项
[com.google.appengine/appengine-api-1.0-sdk”1.9.31]
来自您的项目。clj?我不感谢您告诉我我很笨:]我没有——我没有使用gae,所以这是一个(明显的)这也是为什么这是一个评论,而不是一个答案。如果它解决了你的问题,我很高兴把它变成一个答案。哦,亲爱的。我只是想说清楚,我最后的评论是幽默的。如果你认为我是对抗性的,我道歉。其次,是的。你的评论确实推动了我在这个过程中前进。谢谢。所以我试着把它放在中的e jars:resource path
正如您所提到的,没有骰子。它似乎看不到它们。然后我尝试对appengine local runtime
和appengine local runtime shared
使用boot install
。这两种方法都失败了。最后,我只是在这两种方法上都恢复使用了旧的lein localrepo
成功。我已经更新了顶部链接的github代码以反映当前的状态。知道为什么:资源路径不起作用并且我不能启动安装?@StephenCagle你能像本文中那样尝试启动pom添加src jar安装吗:?