0

私はgradleを使用してマルチプロジェクトJ2EEビルドを管理しています-最終目標は、ターゲットサーバーにデプロイし、解凍して実行できる一連のサーバーパッケージ/アーティファクトを生成することです。

つまり、各アーティファクトには、実行に必要なすべてのものが含まれています(JDKを除く)。

プロジェクトの構造は次のようになります。

Root project 'proto' - This is the master-build project
+--- Project ':applications' - Default build settings for applications
|    +--- Project ':applications:foo' - Foo API
|    +--- Project ':applications:bar' - Bar API
|    \--- Project ':applications:baz' - Baz API
+--- Project ':common' - Common code shared by multiple projects
|    \--- Project ':common:subcomponents' - Settings shared by subcomponents
|         +--- Project ':common:subcomponents:configuration' - Configuration
|         \--- Project ':common:subcomponents:initializer' - Initializers
+--- Project ':servers' - Default tasks for building server artifacts
|    +--- Project ':servers:foobar' - Assembles and runs the foobar server
|    +--- Project ':servers:foobaz' - Assembles and runs the foobaz server
|    \--- Project ':servers:barbaz' - Assembles and runs the barbaz server
\--- Project ':webapps' - These are the defaults for webapps
     +--- Project ':webapps:foo' - The webapp for foo
     +--- Project ':webapps:bar' - The webapp for bar
     \--- Project ':webapps:baz' - The webapp for baz

共通のアプリとWebアプリを相互に依存関係として構築することは非常に簡単ですが、サーバープロジェクトを構築することはやや困難であることが証明されています。

私の現在のアプローチは、「servers」フォルダー内の最低限のサーバーを使用し、その内容をビルド中のタゲットサーバーにコピーしてから、warファイルをコピーしてすべてを圧縮することです...しかし、私のルート/サーバー/ビルド.gradleは混乱し始めています。

したがって、問題は、「耳」スタイルのプラグインを作成することで、サーバーの構築を簡素化できるでしょうか。

また、私は現在resin-pro-3.0.25を使用していますが、すぐに(次の数か月)別のサーバーコンテナに切り替えることを計画しているため、正直な質問になります-サーバーアーティファクトを構築するときに同様のアプローチを使用している他の人々ですTomcat /桟橋用?

あなたの考えは大歓迎です!

4

1 に答える 1

0

バンドルロジックを別のスクリプトに分離することは、別のプロジェクトでの使用も簡素化するため、常に価値があると思います。また、このタスクを実行するために必ずしもプラグインを作成する必要はないことに注意してください。メインプロジェクトのbuildSrcディレクトリにあるスクリプトから開始できます。

のサブプロジェクトは、配布可能に注入されるいくつかの構成を格納していると思う:serversので、あなたの構造は私には理にかなっています。次に、スクリプトは、慣例に従ってすべてのファイルを取得する新しいタスクを定義します(プロジェクトの共通ディレクトリ構造、実行されているものと同じ名前のサブプロジェクト:serversからWARを取得します...)。:webapps

あなたの最後の質問に関しては、これはターゲットOSに依存すると思います-たとえば、DebianがアプリケーションのWARと構成のみを含み、コンテナパッケージ(公式リポジトリから、またはあなたが作成したもの)に依存するパッケージを作成している場合私にとってもっと自然になりなさい。

于 2011-05-27T10:05:32.420 に答える