我已将业务解决方案分解为多个较小的Web应用程序,并使用Lein Compjure插件创建了这些小型Web应用程序。(这样可以加快开发速度)。我现在正尝试将这些Web应用程序合并到一个Web应用程序中,让我们称之为 unifiedapp ,通过创建一个新的lein compojure项目并将较小的Web应用程序添加为依赖项。我将在 unifiedapp 中创建approprite应用程序路由,以便调用来自较小的Web应用程序的正确处理程序。
我面临的问题是,lein不会将war文件作为依赖项,当我尝试为lein compojure项目创建一个简单的jar文件时(小型Web应用程序,它会失败。
编辑: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 时,我收到以下消息:
警告:jar中不存在指定的Main-Class。它可能无法按预期执行。包含main方法的命名空间中可能缺少gen-class指令,或者命名空间未经过AOT编译。
我确实在目标文件夹中看到了一个jar文件,但出于某种原因,它不会将jar文件复制到.m2\repository
。因此,尝试包含此jar(此Web应用程序的路由)的父Web应用程序无法看到它。
答案 0 :(得分:0)
感谢Alan的回应,我改变了方法。我没有通过修改主Web应用程序的project.cj文件来合并源代码 源和资源使用子/子应用程序
(defproject mainwebapp "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"]]
:source-paths ["../app1/src" "../app2/src" "../app3/src" "src"]
:resource-paths ["../app1/resources" "../app2/resources" "../app3/resources" ]
:plugins [[lein-ring "0.9.7"]]
:ring {:handler mainwebapp.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.3.0"]]}})