【发布时间】:2018-05-14 17:07:40
【问题描述】:
我已经将一个业务解决方案分解为多个较小的 Web 应用程序,并使用 Lein Compjure 插件创建了这些小型 Web 应用程序。(这可以加快开发速度)。我现在正在尝试将这些 Web 应用程序合并到一个 Web 应用程序中,我们称之为 unifiedapp,方法是创建一个新的 lein compojure 项目并将较小的 Web 应用程序添加为依赖项。我将在 unifiedapp 中创建适当的应用程序路由,以便调用来自较小 Web 应用程序的正确处理程序。
我面临的问题是 lein 不将战争文件作为依赖项,当我尝试为 lein compojure 项目创建一个简单的 jar 文件时(小型网络应用程序,它失败了。
编辑:project.clj(这是由lein new compojure hello-world生成的)
(defproject hello-world "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:min-lein-version "2.0.0"
:dependencies [[org.clojure/clojure "1.8.0"]
[compojure "1.5.1"]
[ring/ring-defaults "0.2.1"]]
:plugins [[lein-ring "0.9.7"]]
:ring {:handler hello-world.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.3.0"]]}})
当我运行 lein jar install 时,我收到以下消息:
警告:指定的 Main-Class 在 jar 中不存在。它可能无法按预期执行。包含 main 方法的命名空间中可能缺少 gen-class 指令,或者命名空间尚未经过 AOT 编译。
我确实在目标文件夹中看到了一个 jar 文件,但由于某种原因,它没有将 jar 文件复制到 .m2\repository 。因此,试图包含此 jar 的父 Web 应用程序(此 Web 应用程序的路由)看不到它。
【问题讨论】:
-
为什么为您的 compojure 应用程序创建 jar 文件听起来像是这个问题的重要部分,您能否尽可能多地包含输出和涉及的 project.clj 文件(同时尊重您的保密要求)
-
我只是将源代码合并到一个新的 lein 项目中。你有什么不想这样做的原因吗?
-
@Alan Thompson,这个小型 Web 应用程序非常易于维护、开发、测试和调试。我不想放弃灵活性。
标签: clojure leiningen compojure