部署 – Clojure / Ring:如何将我的clojure应用程序与我无法控制的java构建过程集成?

我有一个独特的构建情况.我正在使用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>

相关文章

Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Sh...
运行程序出现下面错误:HTTP Status 500 ------------------...
1、建立DM的profile,使用的模版在install_root/profileTempl...
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是...
英文操作系统导致 Debug 下的变量查看时显示乱码,可通过改变...
eclipse中javascript报错问题处理:三个地方:&lt;1&...