gpt4 book ai didi

deployment - Clojure/环 : How can I integrate my clojure app with a java build process that is out of my control?

转载 作者:行者123 更新时间:2023-12-02 10:27:26 26 4
gpt4 key购买 nike

我有一个独特的构建情况。我正在使用lein uberwar从我的环应用程序中构建一个 war 并部署到 beanstalk。这一切都很好。现在,我们需要将代码推送到 svn 存储库,在那里他们将管理构建,而 svn 存储库对 clojure 一无所知(仅 java)。这是一个巨大的官僚组织,他们的构建过程已经到位,所以让他们安装 lein在他们的服务器上目前是不可能的。我知道 lein 在底层使用了 Maven,所以我知道这在理论上是可行的,但我仍然对这个过程的几个步骤存有疑问。

我在 lein-ring 经历了 war build 过程我看到的主要问题是 servlet 和监听器类与 web.xml 一起生成。我觉得我可以提供执行此任务的 java 文件,但不清楚这些 java 文件将包含什么以及它们最终将位于项目结构中的位置。看看终极 war 中生成的 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>

关于deployment - Clojure/环 : How can I integrate my clojure app with a java build process that is out of my control?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com