pri*_*ing 6 deployment clojure war ring amazon-elastic-beanstalk
我有一个独特的构建情况.我正在使用lein uberwar我的环应用程序构建一个战争并部署到beanstalk.这一切都很有效.现在它出现了一个要求,我们需要将代码推送到一个svn repo,在那里他们将管理构建,它对clojure一无所知(只有java).这是一个庞大的官僚组织,他们的构建过程已经到位,因此将它们安装lein在他们的服务器上是不可能的.我知道lein在引擎盖下使用了maven所以我知道这可以在理论上起作用,但我对这个过程的几个步骤仍有疑问.
我在lein-ring中完成了构建war的过程,我看到的主要挂断是生成servlet和listener类,以及web.xml.我觉得我可以提供执行此任务的java文件,但我不清楚这些java文件将包含哪些内容以及它们最终将存在于项目结构中.看看在最终战争中生成的servlet.clj和listener.clj文件看起来很简单,可能已经存在这样的例子了?
我看到的另一大障碍是war进程调用clojure.core/compile项目命名空间,该命名空间从clojure源生成所有类文件.有没有办法在maven构建期间触发此编译?我几乎想象一个java类,它将编译器转换为clojure.core/compile,但我不确定从java调用clojure的来龙去脉,而不是相反(通常的流程方向),或者如何插入这一步进入了一个基本的maven构建过程.
任何关于从哪里开始的任何见解都是最受欢迎的!谢谢大家.
查看Zi maven插件.您将其指定为子项目中的插件,pom.xml然后填充javac插件在项目其余部分中执行的相同操作.你项目之外的任何人都不需要知道Clojure存在.
查看自述文件了解详情
<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>
Run Code Online (Sandbox Code Playgroud)
您可能对我的名为ring-java-servlet的库感兴趣.
它提供的是一个已经AOT编译的通用servlet类,然后可以在web.xml中将其声明为常规servlet.它需要常规的servlet init参数来声明必须委托servlet服务调用的处理程序的名称空间和var名称.
https://github.com/laurentpetit/ring-java-servlet