2017-10-16 5 views
1

私は、ORM、Tomcat Server、およびIntelliJとしてActiveJDBCをIDEとして使用してSpring MVCアプリケーションを開発しています。Tomcatにデプロイされた成果物のポスト・コンパイル・フェーズの変更を含む問題

必要な機能性のために、ActiveJDBCはコンパイルされたクラスのいくつかのバイトコード操作(ORMによる計装と呼ばれる)を必要とします。したがって、コンパイル段階の後、コンパイルされたクラスには静的メソッドが追加されます。これはすべて問題ありませんが、WebアプリケーションのアーティファクトをTomcatにデプロイしようとすると、WARにコンパイルされたクラスが含まれています.の前にバイト操作(計測)が発生しました。

コンパイル出力がActiveJDBCによって必要な計測を投稿含めるには、私が試してみました:

>をファイルにナビゲートして、プロジェクト構造のアーティファクトを作成し、手動で計測を経て追加されたメソッドが含まれてコンパイルされたクラスを含みます。 enter image description here 次のエラーが発生し、上述のアーティファクト展開:

The origin server did not find a current representation for the target
resource or is not willing to disclose that one exists.

私が代わりにメインモジュールのコンパイル出力を使用する場合、私はブラウザ上でアプリケーションにアクセスする、しかし、ページ上で500エラーを受け取ることができますがソースコードは、計測器で利用できるメソッド(ポストコンパイルタスク)を呼び出します。

私の質問: 1)デプロイする成果物をビルドするには、メインモジュールのコンパイル出力を使用する必要がありますか? 2)アーティファクトにメインモジュールのコンパイルがそのまま含まれている場合は、ポストコンパイルフェーズの修正をアーティファクトに含めるにはどうすればよいですか?

答えて

0

愚かな間違い!手動でアーティファクトを構築するときは、適切なディレクトリ構造を使用するのを忘れていました。

0

の場合、ではIntelliJ Ideaを使用して展開できますが、ほとんど誰もこれを行いません。 JavaLiteプロジェクトのいくつかの例:https://github.com/javalite/simple-example、具体的にはMaven Instrumentation Plugin:https://github.com/javalite/simple-example/blob/master/pom.xml#L31を使用して、パッケージ化する前にモデルを計測してください。その後、いつものようにWARファイルをデプロイしてください。コマンドラインでビルドしてパッケージ化すると、IDEよりも一貫した結果が得られます。

さらに、ActiveJDBCとうまく統合されているため、WebパーツのActiveWebを調べることをお勧めします。http://javalite.io/activeweb

関連する問題