我有一个独特的构建情况.我正在使用lein uberwar从我的环应用程序中构建一个战争并部署到beanstalk.这一切都很有效.现在它出现了一个要求,我们需要将代码推送到一个svn repo,在那里他们将管理构建,它对clojure一无所知(只有
java).这是一个庞大的官僚组织,他们的构建过程已经到位,所以让他们在他们的服务器上安装lein目前是不可能的.我知道lein在引擎盖下使用了maven所以我知道这可以在理论上起作用,但我对这个过程的几个步骤仍有疑问.
我在lein-ring中完成了构建战争的过程,我看到的主要问题是生成了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 plugin.您在子项目的pom.xml中将其指定为插件,然后填充javac插件在项目其余部分中执行的相同操作.你项目之外的任何人都不需要知道Clojure存在.
看看readme for details
<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>