如何将多个Clojure Web(Compojure)应用程序合并为一个?

如何将多个Clojure Web(Compojure)应用程序合并为一个?,clojure,leiningen,compojure,Clojure,Leiningen,Compojure,我已经将一个业务解决方案分解为多个较小的web应用程序,并使用Lein Compjure插件创建了这些较小的web应用程序(这使得开发速度更快)。我现在正试图通过创建一个新的lein compojure项目并将较小的web应用程序添加为依赖项,将这些web应用程序合并到一个web应用程序中,称之为unifiedapp。我将在unifiedapp中创建适当的应用程序路由,以便从较小的web应用程序调用正确的处理程序 我面临的问题是,lein没有将war文件作为依赖项,当我尝试为lein compo

我已经将一个业务解决方案分解为多个较小的web应用程序,并使用Lein Compjure插件创建了这些较小的web应用程序(这使得开发速度更快)。我现在正试图通过创建一个新的lein compojure项目并将较小的web应用程序添加为依赖项,将这些web应用程序合并到一个web应用程序中,称之为unifiedapp。我将在unifiedapp中创建适当的应用程序路由,以便从较小的web应用程序调用正确的处理程序

我面临的问题是,lein没有将war文件作为依赖项,当我尝试为lein compojure项目(小型web应用程序)创建一个简单的jar文件时,它失败了

编辑:project.clj(由lein new compojure hello world生成)

当我运行lein jar安装时,我得到以下消息:

警告:jar中不存在指定的主类。它可能无法按预期执行。包含主方法的命名空间中可能缺少gen Class指令,或者命名空间尚未进行AOT编译


我确实在目标文件夹中看到了一个jar文件,但由于某些原因,它没有将jar文件复制到
.m2\repository
。因此,试图包含此jar的父web应用程序(此web应用程序的路由)无法看到它。

感谢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"]]}})

多亏了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"]]}})

为什么为您的compojure应用程序创建jar文件听起来像是这个问题的一个重要部分,您是否可以包括输出以及尽可能多的project.clj文件(同时尊重您的保密要求)我只想将源代码合并到一个新的lein项目中。你不想这样做有什么原因吗?@Alan Thompson,这个小型web应用程序很容易维护、开发、测试和调试。我不想放弃灵活性。为什么为你的compojure应用程序创建jar文件听起来是这个问题的一个重要部分,您是否可以包括输出和尽可能多的project.clj文件(同时遵守您的保密要求)我会把源代码合并到一个新的lein项目中。你有什么理由不想这样做吗?@Alan Thompson,这个小型web应用程序非常容易维护、开发、测试和调试。我不想放弃灵活性。