Deployment Clojure/Ring:如何将Clojure应用程序与我无法控制的java构建过程集成?
我有一个独特的建设情况。我正在使用Deployment Clojure/Ring:如何将Clojure应用程序与我无法控制的java构建过程集成?,deployment,clojure,war,amazon-elastic-beanstalk,ring,Deployment,Clojure,War,Amazon Elastic Beanstalk,Ring,我有一个独特的建设情况。我正在使用leinuberwar从我的环形应用程序构建一个war,并部署到beanstalk。这一切都很好。现在,我们需要将代码推送到svn repo,在那里他们将管理构建,而svn repo对clojure(仅java)一无所知。这是一个庞大的官僚组织,他们的构建过程已经就绪,因此让他们在服务器上安装lein目前是不可能的。我知道lein在引擎盖下使用maven,所以我知道这在理论上是可行的,但我仍然对这个过程的几个步骤表示怀疑 我在中经历了war构建过程,我看到的主要
leinuberwar
从我的环形应用程序构建一个war,并部署到beanstalk。这一切都很好。现在,我们需要将代码推送到svn repo,在那里他们将管理构建,而svn repo对clojure(仅java)一无所知。这是一个庞大的官僚组织,他们的构建过程已经就绪,因此让他们在服务器上安装lein
目前是不可能的。我知道lein在引擎盖下使用maven,所以我知道这在理论上是可行的,但我仍然对这个过程的几个步骤表示怀疑
我在中经历了war构建过程,我看到的主要问题是servlet和侦听器类与web.xml一起生成。我觉得我可以提供执行此任务的java文件,但不清楚这些java文件将包含哪些内容,以及它们最终在项目结构中的位置。看看最终战争中生成的servlet.clj和listener.clj文件,它们看起来非常简单,可能已经有了这样的例子
我看到的另一大障碍是war进程在项目名称空间上调用clojure.core/compile
,它从clojure源代码生成所有类文件。在从maven构建的过程中,是否有方法触发此编译?我几乎在想象一个java类将编译工作外包给clojure.core/compile,但我不确定从java调用clojure的具体细节,而不是从java调用clojure(通常的流程方向),也不确定如何将此步骤插入到基本的maven构建过程中
任何关于从何处开始的见解都将是最受欢迎的!谢谢大家。请查看。您可以在子项目的pom.xml
中将其指定为插件,然后它将填充与javac插件在项目其余部分相同的卷。您项目之外的任何人都不需要知道Clojure的存在
查看
org.cloudjust.plugin
梓
0.5.5
默认编译
编译
**/test.clj
您可能对我的名为ring java servlet的库感兴趣
它提供的是一个已经由AOT编译的通用servlet类,然后可以在web.xml中声明为常规servlet。它需要常规的servlet init参数来声明处理程序的名称空间和var名称,servlet服务调用必须委托给该处理程序
或者你可以看看亚瑟:说真的,你应该开办一所Clojure学校,或者至少写一本Clojure实习书。告诉构建团队你的要求是什么。他们可能会让你大吃一惊相信我我试过了。我没有遇到阻力,只是声称没有人真正有能力改变它!官僚主义是一种疾病……我在工作中也做过同样的事情。简单的JavaServlet+.clj文件作为资源,而现有的构建基础设施也不明智。
<build>
<plugins>
<plugin>
<groupId>org.cloudhoist.plugin</groupId>
<artifactId>zi</artifactId>
<version>0.5.5</version>
<executions>
<execution>
<id>default-compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/test.clj</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>