6

私は独特のビルド状況を持っています。私はlein uberwar自分のリング アプリケーションから戦争を構築し、beanstalk にデプロイするために使用しています。これはすべてうまくいっています。ここで、ビルドを管理する svn リポジトリにコードをプッシュする必要があることが要件として出てきますが、これは clojure について何も知りません (Java のみ)。それは巨大な官僚組織であり、その構築プロセスはすでに整っているためlein、サーバーにインストールすることは現在問題外です. lein はフードの下で maven を使用していることを知っているので、これが理論的には機能することはわかっていますが、このプロセスのいくつかのステップについてはまだ疑問があります。

私はlein-ringで war構築プロセスを実行しましたが、主なハングアップは、サーブレットとリスナーのクラスが web.xml と共に生成されることです。このタスクを実行する Java ファイルを提供できると思いますが、それらの Java ファイルに含まれるものと、最終的にプロジェクトの構造内のどこに存在するかについては不明です。究極の戦争で生成される servlet.clj および listener.clj ファイルを見ると、それらは非常に単純に見えますが、この例は既に存在するのでしょうか?

もう 1 つの大きなハードルは、war プロセスがclojure.core/compileプロジェクトの名前空間を呼び出すことです。これにより、clojure ソースからすべてのクラス ファイルが生成されます。Maven からのビルド中にこのコンパイルをトリガーする方法はありますか? 私はコンパイルを clojure.core/compile にファームアウトする Java クラスをほとんど想像していますが、java から clojure を呼び出すことの内外 (通常の流れの方向) や挿入方法についてはよくわかりません。これは、基本的な Maven ビルド プロセスへのステップです。

このいずれかについてどこから始めるべきかについての洞察は大歓迎です! 皆さんありがとう。

4

3 に答える 3

7

Zi Maven プラグインをチェックしてください。サブプロジェクトのプラグインとして指定するとpom.xml、javac プラグインがプロジェクトの残りの部分で行うのと同じ役割を果たします。あなたのプロジェクト以外の誰も、Clojure が存在することを知る必要さえありません。

詳細については、 readme を確認してください

 <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>
于 2012-09-18T19:21:47.347 に答える
5

ring-java-servletという名前の私のライブラリに興味があるかもしれません。

それが提供するのは、すでにAOTでコンパイルされた汎用サーブレットクラスであり、web.xmlで通常のサーブレットとして宣言できます。サーブレットサービス呼び出しを委任する必要があるハンドラの名前空間と変数名を宣言するには、通常のサーブレット初期化パラメータが必要です。

https://github.com/laurentpetit/ring-java-servlet

于 2012-09-18T23:58:42.550 に答える
1

または、 maven clojure プラグインを見ることができます

于 2012-09-19T11:09:11.733 に答える