JBoss にデプロイされる Web アプリを作成するプロジェクトがあります。Maven、war のパッケージ化など。現在、クライアントには、アプリのコマンドライン インターフェイスを含める必要があり、ユーザーは war 内のどこかで main メソッドを起動できる必要があります (アプリが現在 JBoss にデプロイされているかどうか)。
私はちょっと途方に暮れています。私はここで検索し、Googleでさまざまな検索を行い、Jetty / Jenkinsの例を見つけましたが、これらの例には、jarとして実行するために必要なクラスファイルが1つしかないようです。
現在、プロジェクトの戦争構造は次のとおりです。
-resources
-META-INF
---MANIFEST.MF, et al
-WEB-INF
---web.xml, classes(com/*), lib, et al
Java -jar を使用して呼び出したいクラスの Main-Class を含む MANIFEST.MF ファイルを Maven にセットアップさせています。しかし、戦争の構造は、次のような「通常の」ジャー構造に従う必要があるようです。
-resources
-com/*/main.class
-META-INF
---MANIFEST.MF, et al
-WEB-INF
---web.xml, classes(com/*), lib, et al
しかし、main.class はアプリ内の他のクラスに依存するため、jar 機能と戦争のために、両方の場所にますます多くのコードを配置していることに気付きます。
わかりましたので、Maven + antrun を使用して、クラス ファイルを WEB-INF/classes から war ファイルのルートにコピーしました。現在、クラスが依存する jar があります (たとえば、log4j)。だから今、私はantrunを使って必要なjarファイルを解凍し、それらのクラスファイルを戦争のルートに配置していることに気づきました...
これは...狂っているようです。(より良い)方法はありますか?
CLI機能はデータベースにアクセスする必要があるため、残念ながら多くのクラスが必要です (すべての DAO/EBO/構成クラス)。