Mavenを使用したJava EEプロジェクトの作成


13

Eclipseを使用してJava EE Webアプリを1年ほど開発しています。私の雇用主はMavenを使用していませんが、それについて詳しく読むほど、Maven + Hudsonが私たちにとって非常に有益であると確信しています。ただし、まず、概念実証を作成できるように、空き時間にこれらのテクノロジに慣れる必要があります。

現在、私はまだMavenの初心者です。MavenでJava EE Webアプリを作成するためのベストプラクティスのセットはありますか?たとえば、基本的なアーキタイプを使用してプロジェクトを作成し、サーブレットコンテナ、EJB、EclipseLinkなどのPOMに依存関係を追加することにより、必要なすべてのJARを追加できます。それを行う方法。このトピックについて提供できるガイダンスをいただければ幸いです。

回答:


10

後までアーキタイプを気にしないでください

Mavenについて知っておく必要があるすべての情報については、Webサイトいくつかの本を読んでください。しかし、それはあなたが達成しようとしているものに対して少しやり過ぎです。

開始するには、次のようにWebアプリケーションの標準Maven構造に従ってWebアプリケーションをレイアウトします。(これにはMavenアーキタイプは必要ありません。これは単なる標準フォルダーの集まりであり、2分で作成できます)。

  • src/main/java -本番Javaコードが含まれています
  • src/main/resources -プロダクションクラスパスリソース(例:Springコンテキスト)が含まれます
  • src/main/webapp -(WEB-INF / web.xmlを含むがlibフォルダーを含まない)
  • src/test/java -テストJavaコードが含まれています
  • src/test/resources -テストリソースが含まれます(例:Webサービステスト用のXMLフィードなど)

基本的なプラグイン

次のステップは、多数のプラグインを選択することです。通常の容疑者は、明らかに、クリーン、コンパイル、およびリソースをサポートしている人です(Mavenの一部として提供されますが、構成できます)。その後、surefireユニットテスターとWARプラグインが必要になります。これで、非常に基本的なWebアプリケーションを作成できます。

より高度なプラグイン

次のステップは、FindbugsとPMDプラグインを導入することです。これにより、コードを徹底的に調べ、さまざまな潜在的な問題を報告できます。おそらく、ソースコードの相互参照用のJXR、TODOおよびREFACTORタグの追跡用のタグリストなどが必要になります。何より...

... WebアプリケーションにJettyプラグインを使用する

Jettyプラグインを使用して、IDE内でWARファイルを実行し、デバッグを容易にします。それは速くて小さく、仕事を本当に速く終わらせます。Mavenビルドの一部としてJettyを使用すると、複雑なサーバーパネルを構成したIDEを必要とせずに、任意のマシンでプロジェクトをテストできます。また、他のWARファイルへの依存関係を宣言できるため、「mvn clean jetty:run」という単一のコマンドで、複数のWebアプリケーションで構成される完全な作業環境を生成できます。これはどこでも機能し、テストJNDI構成を提供して、Springによって注入されたデータソースをすべて外部的に構成することもできます。このJettyアプローチと標準のデモHTMLページ(src/test/resources/demo.html)作業環境を整えようとする開発者の数時間を節約できます。1つのコマンドで完了です。シンプル。

IDEの構成

Mavenを使用すると、Eclipse、Netbeans、そしてもちろん私の個人的なお気に入りのIntellijなど、すべての大物がサポートしているので簡単です。IDEでpom.xmlを指定するだけで、リストされているすべての依存関係が自動的に削除されます。これ以上いじくり回す必要はありませんWEB-INF/lib。Eclipseでは、通常File | インポート... | Mavenプロジェクト| pom.xml。

Hudsonとの統合

最初にHudson(単なるwebapp)をインストールし、次に適切なバージョンをチェックアウトするようにバージョン管理システムをターゲットにします。最後のステップは、Mavenを使用してビルドを実行するように構成することです。明らかに、Mavenをビルドマシンにインストールする必要があります(開発マシンと異なる場合)。

ハドソンはスナップショットのビルドのみを行います

Hudsonにスナップショットビルドを実行させ、リリースビルドを手動プロセスに任せます。このアプローチを使用すると、開発者はスナップショットリビジョン(1.0.0-SNAPSHOTなど)でコードを共有でき、ビルドを渡すことができる場合にのみ、チームリポジトリで共有されます。通常、Hudsonは「mvn clean deploy」を実行しますが、ビルドごとに小さなプロジェクトWebサイトを作成するため、「site」目標を含めることもプロセスの一部になる場合があります。チームの開発者は、Maven依存関係管理プロセスを通じて、更新されたスナップショットビルドをプロジェクトに自動的に含めます。

ハドソンは、あらゆる種類のメトリックをサポートできる豊富なプラグインを提供しています。私の個人的なお気に入りは、プロジェクトごとに経時的に合格するテストの数を追跡することです。単体テストの数とカバレッジが増え続けていることを経営陣に示すことは素晴らしいことです。

一般的なセットアップガイダンス

リポジトリを少なくとも次の構造に分割します。

  • チームリリース-リリースされたすべての生産成果物はここに行く
  • team-snapshot-すべてのスナップショット開発アーティファクトはここにあります
  • third-party-release-サポートするすべてのサードパーティライブラリ(Spring、Hibernateなど)

開発者ユーザーアカウントは、スナップショットまたはリリースのいずれかのチームリポジトリに書き込むことができません。これにより、開発者は急いでいる場合にハドソンをバイパスでき、すぐに標準になります。

すべてのサードパーティのソース、javadocs、およびSHA署名を常にダウンロードするようにしてください。Jarvanaは、見つけるのが難しいすべてのクラスのための優れたリポジトリエクスプローラです。

NexusやArtifactoryなどのリポジトリマネージャーをインストールして、増え続けるリポジトリをより適切に制御できるようにすることを検討してください。


2
ソナーも非常に素晴らしく、maven /ハドソンとよく合います
ケビン

1
絶対に。現在、私がチームでMavenプロジェクトに取り組んでいる場合、ローカルのFindbugs / PMDが致命的な問題をすばやくキャッチし、JenkinsがNexusまたはArtifactoryにアーティファクトをデプロイしてビルドした後のSonarジョブを期待しています。これにより、アーティファクトを簡単に見つけることができ、プロジェクトエコシステム全体でそれらのアーティファクトの影響分析(「使用場所」)を提供します。git、JIRA、およびFisheyeと組み合わせることで、素晴らしい開発プロセスを利用できます。
ゲイリーロウ

1
ゲイリーは、PDFリンクは有効期限が切れている
user1787812

1

Mavenは多くのアーキタイプを提供します

mvn archetype:generate

利用可能なリストを印刷します。

プレーンなJavaアーキタイプとJ2EEアーキタイプの主な違いは、jspおよびイメージのディレクトリが生成されることです。新しいJ2EEプロジェクトを開始する場合は、最初から使用することを検討してください。

プロジェクトが大きくなるにつれて、依存関係を追加できます。個人的には、最小限の依存関係のコレクション(J2EEの基本的なアーキタイプなど)から始めて、必要なものを徐々に追加することを好みます。


0

基本的なアーキタイプから始めてすべてのビットを追加することでこれを実行しましたが、それはあまり良い方法ではないと確信しています。しかし、私はそれが他の方法でも厄介だと思う。良い「アーキタイプ」を選択することは、「秘密に深く精通している」のでない限り困難です。私の好みにとっては、賢明な(賢明で発見可能な技術情報とは対照的な)伝承のようなものです。


そして、それは良い質問だと思います。もっと良い答えがあったらいいのに。
ドナルドフェローズ

とても感謝しています。
マイケル

0

Mavenは、Archetypesと呼ばれるテンプレートからプロジェクトを作成する方法を提供します。コマンドmvn archetype:generateを使用して、インタラクティブに 1つを選択します。直接指定することもできます。

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

すべてを1行で。


0

過去3か月間、MavenとHudsonを使用しています。すべてのユニットテストを実行し、テストレポートを生成することにより、コードベースの正常性を定期的にチェックするのに役立ちます。これを試すことができます。
Spring Rooを試すこともできます。これは、SpringベースのJ2EEプロジェクトを作成するためのRADツールです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.