目次
なぜMavenを使用するのですか?
Core Mavenは、すべての開発者が知っておくべきコマンドです
プロのような依存関係の管理
1。依存関係の範囲
2。推移的依存関係を除く
3。依存関係管理
マルチモジュールプロジェクトは簡単になりました
プラグインを使用してビルドをカスタマイズします
現実世界使用のためのベストプラクティス
最終的な考え
ホームページ Java &#&チュートリアル Javaプロジェクト管理のためのMavenの開発者ガイド

Javaプロジェクト管理のためのMavenの開発者ガイド

Jul 30, 2025 am 02:41 AM
java maven

Mavenは、Javaプロジェクト管理と建設の標準ツールです。答えは、POM.xmlを介してプロジェクト構造、依存関係管理、ライフサイクルの自動化、プラグイン拡張機能を標準化できるという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNクリーン、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構造を使用して大規模なアプリケーションを整理し、親POMによって均一に管理します。 5.コンパイラ、SureFire、その他のプラグインを構成して、ビルド動作をカスタマイズします。 6.セマンティックバージョンの使用、スナップショットを避け、並行したビルドを有効にし、Mavenラッパーを使用するなどのベストプラクティスに従って、環境の一貫性を確保し、最終的にチームワークのために再現性があり、保守可能で効率的な構造プロセスを実現します。

Java Project ManagementのためのMavenへの開発者のガイド

Mavenは単なるビルドツールではなく、Java開発に一貫性、自動化、構造をもたらすプロジェクト管理および理解ツールです。特にチームや複数のプロジェクトにわたってJavaアプリケーションを構築している場合、Mavenは、コードの構築、テスト、パッケージ、展開方法の標準化を支援します。 Mavenを開発者として効果的に使用するための実用的なガイドです。

Javaプロジェクト管理のためのMavenの開発者ガイド

なぜMavenを使用するのですか?

それがどのように機能するかに飛び込む前に、なぜマベンが重要なのかを理解してください:

  • 標準化されたプロジェクト構造:チームの誰もが、ソースファイル、リソース、テストがどこにライブであるかを知っています。
  • 依存関係管理:ジャーを手動でダウンロードすることはもうありません。 Mavenはそれらをリポジトリ(Maven Centralなど)から引き出します。
  • ライフサイクルの構築:一貫したコマンドでコンパイル、テスト、パッケージ、および展開。
  • プラグインエコシステム:コードカバレッジ、ドキュメント、Dockerビルドなどの機能を拡張します。
  • 再現可能なビルドpom.xmlを使用すると、誰もが同じようにプロジェクトを再構築できます。

Mavenは当て推量を削除します。それが本当の力です。

Javaプロジェクト管理のためのMavenの開発者ガイド

POM(プロジェクトオブジェクトモデル)の理解

すべてのMavenプロジェクトの中心は、 pom.xmlファイルです。それはあなたのプロジェクトに関するすべてを定義します:メタデータ、依存関係、プラグイン、プロファイルなど。

これが最小限の例です。

Javaプロジェクト管理のためのMavenの開発者ガイド
 <プロジェクトXMLNS = "http://maven.apache.org/pom/4.0.0"
         xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance"
         xsi:schemalocation = "http://maven.apache.org/pom/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd ">
    <modelversion> 4.0.0 </modelversion>

    <GroupId> com.example </groupId>
    <artifactid> my-app </artifactid>
    <バージョン> 1.0.0 </version>
    <パッケージ> jar </packaging>

    <プロパティ>
        <maven.compiler.source> 11 </maven.compiler.source>
        <maven.compiler.target> 11 </maven.compiler.target>
    </properties>

    <依存関係>
        <依存関係>
            <GroupId> junit </groupid>
            <artifactid> junit </artifactid>
            <バージョン> 4.13.2 </version>
            <scope>テスト</scope>
        </依存関係>
    </依存関係>
</project>

重要な要素:

  • groupId :組織またはプロジェクト名空間。
  • artifactId :プロジェクトの名前。
  • version :バージョン番号(セマンティックバージョンのフォロー)。
  • dependencies :プロジェクトが必要とするライブラリ。
  • properties :Javaバージョンのような再利用可能な値を定義します。

?プロのヒント: https://m.sbmmt.com/link/9c6ebba8ac5389aed2beda98d31e91afを使用して、依存関係をすばやく検索します。


Core Mavenは、すべての開発者が知っておくべきコマンドです

数十の目標を暗記する必要はありません。いくつかの重要なコマンドです。

指示目的
mvn compileソースコードをコンパイルします
mvn testユニットテストを実行します
mvn package JAR/WARファイルを構築します
mvn clean target/ディレクトリを削除します
mvn installパッケージをローカル.m2リポジトリにインストールします
mvn deployリモートリポジトリに展開します(例:nexus、artifactory)

一般的なコンボ:

 MVNクリーンインストール

これにより、古いビルド、コンパイル、テスト、パッケージの実行、パッケージ、および積分またはCIパイプラインに最適です。

testテストが失敗した場合、 installが停止します。 mvn install -DskipTestsを使用してバイパスします(ただし、使用しないでください)。


プロのような依存関係の管理

Mavenは、推移的依存関係を自動的に処理します。 Spring Webを追加すると、ジャクソン、スプリングコアなどを引き込みます。それらすべてを宣言する必要はありません。

しかし、これは対立につながる可能性があります。管理方法は次のとおりです。

1。依存関係の範囲

スコープを使用して、依存関係が利用可能なときに制御します。

  • compile (デフォルト):すべてのフェーズで利用可能。
  • test :テストのみ(例、Junit)。
  • provided :ランタイム(たとえば、TomcatのサーブレットAPI)によって提供される予定です。
  • runtime :実行時に必要ですが、コンパイル時間(例えば、JDBCドライバー)は必要ありません。
  • system / import :まれ。注意して使用してください。

2。推移的依存関係を除く

ライブラリが時代遅れまたは矛盾する依存関係を引き出す場合:

 <依存関係>
    <groupid> org.springframework </groupId>
    <artifactid> spring-web </artifactid>
    <バージョン> 5.3.0 </version>
    <除外>
        <除外>
            <groupId> commons-logging </groupid>
            <artifactid> commons-logging </artifactid>
        </除外>
    </除外>
</依存関係>

3。依存関係管理

親pomsで<dependencyManagement>を使用して、モジュール全体でバージョンを集中化します。

 <DependencyManagement>
    <依存関係>
        <依存関係>
            <groupid> org.springframework </groupId>
            <artifactid>スプリングコア</artifactid>
            <バージョン> 5.3.21 </version>
        </依存関係>
    </依存関係>
</DependencyManagement>

これで、子どもモジュールには、バージョンを指定せずにspring-coreを含めることができます。


マルチモジュールプロジェクトは簡単になりました

より大きなアプリケーション(API、サービスレイヤー、ドメインモデルなど)の場合、アプリをモジュールに分割します。

構造:

親プロジェクト/
pom.xml(パッケージ:pom)
pi/ api/
pom.xml
├├)/ service/
pom.xml
└└)/永続性/
    pom.xml

pom.xml

 <パッケージ> pom </packaging>
<モジュール>
    <モジュール> API </module>
    <モジュール>サービス</module>
    <モジュール>永続性</module>
</モジュール>

各サブモジュールは別のサブモジュールに依存できます。

 <依存関係>
    <GroupId> com.example </groupId>
    <Artifactid> persistence </artifactid>
    <バージョン> 1.0.0 </version>
</依存関係>

親からmvn clean installを実行し、Mavenは正しい順序でモジュールを構築します。


プラグインを使用してビルドをカスタマイズします

Mavenプラグインは、コードのコンパイル、テスト、生成などのタスクを実行します。

よくある例:

  • コンパイラプラグイン:Javaバージョンを設定します

    <プラグイン>
        <groupid> org.apache.maven.plugins </groupId>
        <artifactid> maven-compiler-plugin </artifactid>
        <バージョン> 3.11.0 </version>
        <configuration>
            <source> 11 </source>
            <Target> 11 </ターゲット>
        </configuration>
    </プラグイン>
  • SureFireプラグイン:テストの実行を制御します

    <プラグイン>
        <groupid> org.apache.maven.plugins </groupId>
        <artifactid> maven-surefire-plugin </artifactid>
        <バージョン> 3.1.2 </version>
        <configuration>
            <include>
                <cluding> **/*test.java </include>
            </include>
        </configuration>
    </プラグイン>
  • JARプラグイン:マニフェストをカスタマイズします

    <プラグイン>
        <groupid> org.apache.maven.plugins </groupId>
        <artifactid> maven-jar-plugin </artifactid>
        <バージョン> 3.3.0 </version>
        <configuration>
            <Archive>
                <マニフェスト>
                    <addclasspath> true </addclasspath>
                    <mainclass> com.example.mainapp </mainclass>
                </manifest>
            </archive>
        </configuration>
    </プラグイン>

exec-maven-pluginやSpotify spotify/dockerfile-maven-pluginなどのプラグインを介してシェルスクリプトまたはDockerビルドを実行することもできます。


現実世界使用のためのベストプラクティス

  • conding一貫したバージョンスキーム(セマンティックバージョン化など)を使用します
  • pom.xmlきれいに保ちます- ハードコードバージョンを回避します。 <dependencyManagement>を使用してください。
  • parent親POM (Spring Bootのspring-boot-starter-parentなど)を活用して、敏感なデフォルトを継承します。
  • multimoduleプロジェクトで並列ビルドを有効にするmvn -T 4 clean install
  • evention環境固有の構成にプロファイルを使用します(DEV、PROD、テスト)。
  • .gitignoretarget/ディレクトリをコミットしないでください。
  • conduction生産中のSNAPSHOTバージョンを避けてください。

また、チームメイトがMaven Pre Installedを必要としないように、 Maven Lappermvnw )の使用を検討してください。

 ./MVNWクリーンインストール

欠落している場合は自動的にMavenをダウンロードします。


最終的な考え

Mavenは何年もの間、そして正当な理由で存在しています。それは安定しており、広くサポートされており、IDES(Intellij、Eclipse)、CI/CDシステム(Jenkins、Githubアクション)、Frameworks(Spring、Jakarta EE)などのツールに深く統合されています。

すべての詳細を前もってマスターする必要はありません。始めて:

  • しっかりしたpom.xmlを書きます
  • 基本的なライフサイクルコマンドを実行します
  • 依存関係を適切に管理します

そこから、マルチモジュール設定、カスタムプラグイン、自動化に成長します。

基本的に、Javaをやっている場合、Mavenはツールキットにいる必要があります。

以上がJavaプロジェクト管理のためのMavenの開発者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

一般的なJava nullpointerexceptionの問題をオプションで解決します 一般的なJava nullpointerexceptionの問題をオプションで解決します Aug 31, 2025 am 07:11 AM

オプションは、Java 8によって導入されたコンテナクラスです。値が空である可能性があることを明確に示すために使用され、それによりnullpointerexceptionが回避されます。 2. MAP、Orelse、およびその他の方法を提供し、メソッドがnullの返却を防ぎ、収集の返品値を標準化することにより、ネストされたヌルチェックを簡素化します。 3.ベストプラクティスには、値のみの値のみが含まれ、フィールドまたはパラメーターの使用を回避し、orelsegtとolelsegetを区別し、get()を直接呼び出しません。 4.オプションは虐待されるべきではありません。空でない方法を包む必要がない場合、ストリームでは不必要なオプション操作を避ける必要があります。オプションを正しく使用すると、コードのセキュリティと読みやすさが大幅に向上する可能性がありますが、適切なプログラミング習慣が必要です。

Chromeでブックマークを編集します Chromeでブックマークを編集します Aug 27, 2025 am 12:03 AM

Chromeブックマークの編集はシンプルで実用的です。ユーザーは、ショートカットキーCTRL Shift O(Windows)またはCMD Shift O(MAC)を介してブックマークマネージャーを入力したり、ブラウザメニューから入力したりできます。 1.単一のブックマークを編集するときは、右クリックして「編集」を選択し、タイトルまたはURLを変更し、[完了]をクリックして保存します。 2.ブックマークをバッチで整理する場合、Ctrl(またはCMD)をブックマークマネージャーの複数選択ブックマークに保持できます。右クリックして、ターゲットフォルダーに「移動」または「コピー」を選択します。 3.ブックマークをエクスポートしてインポートするときは、「解決」ボタンをクリックして「ブックマークをエクスポート」するためにHTMLファイルとして保存し、必要に応じて「インポートブックマーク」機能を介して復元します。

閉じた後に保存しない笑ゲーム設定[修正] 閉じた後に保存しない笑ゲーム設定[修正] Aug 24, 2025 am 03:17 AM

IfLeagueofLegendssettingsaren’tsaving,trythesesteps:1.Runthegameasadministrator.2.GrantfullfolderpermissionstotheLeagueofLegendsdirectory.3.Editandensuregame.cfgisn’tread-only.4.Disablecloudsyncforthegamefolder.5.RepairthegameviatheRiotClient.

キーボードで動作しないキーを入力します キーボードで動作しないキーを入力します Aug 30, 2025 am 08:36 AM

まず、cehcecalissicalissues slikedebrisordamageandcleanthekeyboard withanexternalone;

Javaのメモリリークとは何ですか? Javaのメモリリークとは何ですか? Aug 28, 2025 am 05:37 AM

AmemoryLeakinjavaoccurswhenununReachable objectsareNotgarbagecollecteddueTolingReferences、excessiveMemoryusageandofmemoryerror.commoncausesincludestaticCollection -retaininectainedededefine、commoncausesincludestaticcectainection coltained retainedectarecomestreamsorne

ラッパークラスとは何ですか?なぜJavaで使用されているのですか? ラッパークラスとは何ですか?なぜJavaで使用されているのですか? Sep 01, 2025 am 05:58 AM

wrapperclasseSaRasseSaReSSEUSTOCONTOCONTOCONTIVEDINTIVESTIPESINTOOBJECTS、IRISUSENCOLLECTIONSを可能にし、nullValuesを許可し、カウートボクシング/unboxing.1.theyAllowprimitiveSobeearrectionSlikEarrylist、

Javaのストリームで最大値または最小値を見つける方法 Javaのストリームで最大値または最小値を見つける方法 Aug 27, 2025 am 04:14 AM

max()およびmin()メソッドを使用して、比較対象のコンパレーターを組み合わせて、comparator.naturalorder()またはinteger :: compareToの基本タイプなど、ストリーム内の最大値と最小値を見つけます。 2。カスタムオブジェクトの場合、Comparator.comparing()を使用して、Person :: Getageなどの特定のフィールドに基づいて比較します。 3。結果はオプションであるため、空のストリームの状況を処理する必要があります。 ispresent()を使用して、またはorelse()をチェックしてデフォルト値を提供できます。ボクシングのオーバーヘッドを避け、パフォーマンスを向上させるために、基本タイプにIntstreamを使用することをお勧めします。最終的には、常に適切に完了する必要があります。

CVE-2024-20674 |Windows Kerberosセキュリティ関数は脆弱性をバイパスします CVE-2024-20674 |Windows Kerberosセキュリティ関数は脆弱性をバイパスします Sep 02, 2025 pm 05:18 PM

0x00序文Kerberosは、これらのサイバーセキュリティの問題の解決策としてMITによって作成されました。ネットワーク上でセキュリティ検証処理を提供するクライアント/サーバーアーキテクチャです。検証を通じて、ネットワークトランザクションの送信者と受信者の身元が真実であることを保証できます。このサービスは、前後に渡されたデータの有効性(整合性)を検証し、送信中にデータを暗号化することもできます(機密性)。 0x01脆弱性の説明被害者ネットワークにアクセスできる攻撃者は、中間(MITM)攻撃または他のローカルネットワークスプーフィング技術を確立し、クライアントの被害者のコンピューターに悪意のあるKerberosメッセージを送信し、Kerberos認証サーバーのふりをすることにより、この脆弱性を活用できます。 0x02cve

See all articles