English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Maven POM

POM(Project Object Model、プロジェクトオブジェクトモデル)はMavenプロジェクトの基本ユニットであり、XMLファイルで、プロジェクトの基本情報を含み、プロジェクトがどのように構築されるか、プロジェクト依存関係を宣言するなど、プロジェクトを説明するために使用されます。

タスクやターゲットを実行する際、Mavenは現在のディレクトリ内でPOMを検索します。POMを読み取り、必要な設定情報を取得し、ターゲットを実行します。

POMでは以下の設定を指定できます:

  • プロジェクト依存関係

  • プラグイン

  • 実行ターゲット

  • プロジェクトビルドプロファイル

  • プロジェクトバージョン

  • プロジェクト開発者リスト

  • 関連メールリスト情報

POMの作成前に、まずプロジェクトグループ(groupId)とプロジェクトのユニークなIDを説明する必要があります。

<project 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>
    <!-- 会社または組織のユニークなマークで、設定時に生成されるパスもこれに基づいて生成されます、例えばcom.companyname.project-group、mavenはこのプロジェクトをjarパッケージとしてローカルパスに配置します:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- プロジェクトのユニークなID、groupIdの下に複数のプロジェクトが存在する場合がありますが、artifactIdで区別されます -->
    <artifactId>project</artifactId>
 
    <!-- バージョン番号 -->
    <version>1.0</version>
</project>

すべてのPOMファイルにはproject要素と3つの必須フィールド:groupId、artifactId、versionが必要です。

ノード説明
projectプロジェクトのルートタグ
modelVersionモデルバージョンは設定する必要があります 4.0。
groupIdこれはプロジェクトグループの識別子です。これは組織またはプロジェクト内で通常ユニークです。例えば、銀行組織com.companyname.project-groupはすべての銀行関連のプロジェクトを所有しています。
artifactIdこれはプロジェクトの識別子です。これは通常プロジェクトの名前です。例えば、消費者銀行。groupIdとartifactIdが一緒にartifactがリポジトリ内の位置を定義します。
version

これはプロジェクトのバージョン番号です。artifactのリポジトリで、異なるバージョンを区別するために使用されます。例えば:

com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1

親(Super)POM

親(Super)POMはMavenのデフォルトのPOMです。すべてのPOMは親POMから継承されます(親POMが明示的に定義されていない場合でも)。親POMには継承できるデフォルト設定が含まれています。したがって、MavenがPOMの依存関係をダウンロードする必要がある場合、Super POMに設定されたデフォルトリポジトリhttp:にアクセスします。//repo1.maven.org/maven2 ダウンロードしてください。

Mavenは、effective pom(Super pomとプロジェクトの独自設定を加えたもの)を使用して関連するターゲットを実行します。これは、pom.xmlでできるだけ少ない設定を行うことを開発者に助け、これらの設定は書き換え可能です。

以下のコマンドを使用して Super POM のデフォルト設定を確認します:

mvn help:effective-pom

次にディレクトリ MVN を作成します/project、このディレクトリ下にpom.xmlを作成し、以下の内容にします:

<project 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>
    <!-- 会社または組織のユニークなマークで、設定時に生成されるパスもこれに基づいて生成されます、例えばcom.companyname.project-group、mavenはこのプロジェクトをjarパッケージとしてローカルパスに配置します:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- プロジェクトのユニークなID、groupIdの下に複数のプロジェクトが存在する場合がありますが、artifactIdで区別されます -->
    <artifactId>project</artifactId>
 
    <!-- バージョン番号 -->
    <version>1.0</version>
</project>

コマンドプロンプトで MVN に移動します/project ディレクトリ、以下のコマンドを実行します:

C:\MVN\project>mvn help:effective-pom

Mavenは、効果的なpomを処理し、表示し始めます-pom。

[INFO] プロジェクトのスキャン...
ダウンロード中: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] 合計時間: 01:36 min
[INFO] 完了時: 2018-09-05T11:31:28+08:00
[INFO] 最終メモリ: 15M/149M
[INFO] ------------------------------------------------------------------------

効果的なPOMの結果は、コントロールタブで表示されるように、継承、挿入の後、設定が有効になります。

<?xml version="1.0" encoding="UTF-8"?>
<!-- ================================================================= -->
<!--                                                                   -->
<!-- Maven Help Pluginで生成された 2012-07-05T11:41:51             -->
<!-- 参照: http://maven.apache.org/plugins/maven-help-plugin/           -->
<!--                                                                   -->
<!-- ================================================================= -->
 
<!-- ================================================================= -->
<!--                                                                   -->
<!-- 効果的なPOMプロジェクト                                         -->
<!-- 'com.companyname.project-group:project-name:jar:1.0'              -->
<!--                                                                   -->
<!-- ================================================================= -->
 
<project 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 h
ttp://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.companyname.project-group</groupId>
  <artifactId>project</artifactId>
  <version>1.0</version>
  <build
    <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
    <outputDirectory>C:\MVN\project\target\classes</outputDirectory>
    <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
    <resources
      <resource
        <mergeId>resource</mergeId>-0</mergeId>
        <directory>C:\MVN\project\src\main\resources</directory>/directory>
      </resource>
    </resources>
    <testResources
      <testResource
        <mergeId>resource</mergeId>-1</mergeId>
        <directory>C:\MVN\project\src\test\resources</directory>/directory>
      </testResource>
    </testResources>
    <directory>C:\MVN\project\target</directory>/directory>
    <finalName>project</finalName>-1.0</finalName>
    <pluginManagement
      <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin/artifactId>
          <version>1.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin/artifactId>
          <version>2.2-beta-2</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin/artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin/artifactId>
          <version>2.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin/artifactId>
          <version>2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin/artifactId>
          <version>2.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-ear-plugin/artifactId>
          <version>2.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-ejb-plugin/artifactId>
          <version>2.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin/artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin/artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin/artifactId>
          <version>2.5</version>
        </plugin>
        <plugin>
          <artifactId>maven-plugin-plugin/artifactId>
          <version>2.4.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-rar-plugin/artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin/artifactId>
          <version>2.0-beta-8</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin/artifactId>
          <version>2.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin/artifactId>
          <version>2.0-beta-7</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin/artifactId>
          <version>2.0.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin/artifactId>
          <version>2.4.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin/artifactId>
          <version>2.1-alpha-2</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-help-plugin/artifactId>
        <version>2.1.1</version>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>/enabled>
      </snapshots>
      <id>central</id>/id>
      <name>Maven Repository Switchboard</name>/name>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>/updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>/enabled>
      </snapshots>
      <id>central</id>/id>
      <name>Maven Plugin Repository</name>/name>
      <url>http://repo1.maven.org/maven2</url>
    </pluginRepository>
  </pluginRepositories>
  <reporting>
    <outputDirectory>C:\MVN\project\target/site</outputDirectory>
  </reporting>
</project>

上記のpom.xmlでは、Mavenがターゲットを実行する際に必要なデフォルトのプロジェクトソースコードディレクトリ構造、出力ディレクトリ、必要なプラグイン、リポジトリ、レポートディレクトリが見られます。

Mavenのpom.xmlファイルも手動で作成する必要はありません。

Mavenは、プロジェクトの作成に必要なプロジェクト構造やpom.xmlを含む多くのプレースホルダープラグインを提供しています。

POMタグ完全解説

<project 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.0http://maven.apache.org/maven-v4_0_0.xsd">
    <!--親プロジェクトの座標です。プロジェクト内で特定の要素の値が指定されていない場合、親プロジェクトの対応する値がプロジェクトのデフォルト値となります。座標にはgroup ID、artifact IDが含まれます。 
        version。 -->
    <parent>
        <!--被继承的父项目的构件标识符 -->
        <artifactId />
        <!--被继承的父项目的全球唯一标识符 -->
        <groupId />
        <!--被继承的父项目的版本 -->
        <version />
        <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 
            目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
        <relativePath />
    </parent>
    <!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,尽管如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
    <modelVersion>4.0.0</modelVersion>
    <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->
    <groupId>asia.banseon</groupId>
    <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个 
        特定的group ID下,artifact ID也必须是唯一的。构件是项目生成的或使用的一个东西,Maven为项目生成的构件包括:JARs,源 码,二进制发布和WARs等。 -->
    <artifactId>banseon-maven2</artifactId>
    <!--项目生成的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->
    <packaging>jar</packaging>
    <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
    <version>1.0-SNAPSHOT</version>
    <!--项目的名称, Maven生成的文档用 -->
    <name>banseon-maven</name>
    <!--项目主页的URL, Maven生成的文档用 -->
    <url>http://www.baidu.com/banseon</url>
    <!-- 项目的详细描述, Maven 生成的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签 
        署名), 不建议使用纯文本描述。如果您需要修改生成的Web站点的索引页面,应修改您自己的索引页文件,而不是调整这里的文档。 -->
    <description>A maven project to study maven.</description>
    <!--このプロジェクトのビルド環境における前提条件を説明しています。 -->
    <prerequisites
        <!--このプロジェクトをビルドしたり、このプラグインを使用するために必要なMavenの最低バージョン -->
        <maven />
    </prerequisites>
    <!--プロジェクトの問題管理システム(Bugzilla、Jira、Scarab、またはお好みの問題管理システム)の名前とURL、この例ではjiraです。 -->
    <issueManagement
        <!--問題管理システム(例えばjira)の名前、 -->
        <system>jira</system>
        <!--プロジェクトが使用する問題管理システムのURL -->
        <url>http://jira.baidu.com/banseon</url>
    </issueManagement>
    <!--プロジェクトの継続的インテグレーション情報 -->
    <ciManagement
        <!--継続的インテグレーションシステムの名前、例えばcontinuum -->
        <system />
        <!--プロジェクトが使用する継続的インテグレーションシステムのURL(継続的インテグレーションシステムがウェブインターフェースを持っている場合)。 -->
        <url />
        <!--ビルドが完了した場合に通知する必要がある開発者/ユーザーの設定項。通知される者情報と通知条件(エラー、失敗、成功、警告)を含みます。 -->
        <notifiers
            <!--ビルドが中断された場合にユーザーに通知する方法を設定します。/開発者 -->
            <notifier
                <!--通知を伝える方法 -->
                <type />
                <!--エラーが発生した場合に通知するかどうか -->
                <sendOnError />
                <!--ビルドが失敗した場合に通知するかどうか -->
                <sendOnFailure />
                <!--ビルドが成功した場合に通知するかどうか -->
                <sendOnSuccess />
                <!--警告が発生した場合に通知するかどうか -->
                <sendOnWarning />
                <!--使用を推奨しません。通知がどこに送信されるか -->
                <address />
                <!--拡張設定項 -->
                <configuration />
            </notifier>
        </notifiers>
    </ciManagement>
    <!--プロジェクトの作成年4桁の数字です。著作権情報を作成する際にこの値を使用する必要があります。 -->
    <inceptionYear />
    <!--プロジェクトに関連するメールリスト情報 -->
    <mailingLists>
        <!--プロジェクトに関連するすべてのメールリストを説明する要素です。自動的に生成されたウェブリファレンスがこれらの情報を使用します。 -->
        <mailingList>
            <!--メールの名前 -->
            <name>Demo</name>
            <!--メールのアドレスまたはリンクを設定します。メールアドレスの場合、ドキュメントを作成すると、mailto: リンクが自動的に作成されます。 -->
            <post>[email protected]</post>
            <!--メールのアドレスまたはリンクをサブスクリプションに設定します。メールアドレスの場合、ドキュメントを作成すると、mailto: リンクが自動的に作成されます。 -->
            <subscribe>[email protected]</subscribe>
            <!--メールの購読を解除するアドレスまたはリンク、メールアドレスの場合、ドキュメントを作成する際にmailto:リンクが自動的に作成されます -->
            <unsubscribe>[email protected]</unsubscribe>
            <!--メール情報を閲覧できるURL -->
            <archive>http:/hi.baidu.com/banseon/demo/dev/</archive>
        </mailingList>
    </mailingLists>
    <!--プロジェクト開発者リスト -->
    <developers
        <!--特定のプロジェクト開発者の情報 -->
        <developer
            <!--SCM内のプロジェクト開発者のユニークな識別子 -->
            <id>HELLO WORLD</id>
            <!--プロジェクト開発者のフルネーム -->
            <name>banseon</name>
            <!--プロジェクト開発者のメールアドレス -->
            <email>[email protected]</email>
            <!--プロジェクト開発者のホームページのURL -->
            <url />
            <!--プロジェクト開発者がプロジェクトで演じる役割、役割要素は様々な役割を説明しています -->
            <roles
                <role>Project Manager</role>
                <role>Architect</role>
            </roles>
            <!--プロジェクト開発者が属する組織 -->
            <organization>demo</organization>
            <!--プロジェクト開発者が属する組織のURL -->
            <organizationUrl>http://hi.baidu.com/banseon</organizationUrl>
            <!--プロジェクト開発者の属性、例えば即時メッセージの処理方法など -->
            <properties
                <dept>No</dept>
            </properties>
            <!--プロジェクト開発者の所在時区、 -11まで12範囲内の整数。 -->
            <timezone-5</timezone>
        </developer>
    </developers>
    <!--プロジェクトの他の貢献者リスト -->
    <contributors
        <!--プロジェクトの他の貢献者。参照:developers/developer要素 -->
        <contributor
            <name />
            <email />
            <url />
            <organization />
            <organizationUrl />
            <roles />
            <timezone />
            <properties />
        </contributor>
    </contributors>
    <!--この要素はプロジェクトのすべてのライセンスリストを説明しています。プロジェクトのライセンスリストのみをリストアップして、依存プロジェクトのライセンスリストはリストアップしないようにしてください。複数のライセンスがリストアップされている場合、ユーザーはその中から一つを選択することができ、すべてのライセンスを受け入れる必要はありません。 -->
    <licenses>
        <!--プロジェクトのlicenseを説明し、プロジェクトのウェブサイトのlicenseページ、他のレポートやバリデーションにも使用されます。 -->
        <license>
            <!--licenseの法的名称 -->
            <name>Apache 2</name>
            <!--公式のlicense本文ページのURL -->
            <url>http://www.baidu.com/banseon/LICENSE-2.0.txt</url>
            <!--プロジェクトの配布方法の主な方法:repo、Mavenリポジトリからダウンロードできます manual、ユーザーは依存関係を手動でダウンロードおよびインストールする必要があります -->
            <distribution>repo</distribution>
            <!--licenseに関する追加情報 -->
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>
    <!--SCM(Source Control Management)タグは、コードベースを設定し、Mavenウェブサイトや他のプラグインで使用することができます。 -->
    <scm>
        <!--SCMのURL、このURLはバージョン管理リポジトリとその接続方法を説明しています。詳細については、SCMsが提供するURL形式とリストを参照してください。この接続は読み取り専用です。 -->
        <connection>
            scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
        </connection>
        <!--開発者用に設定され、connection要素と同様です。つまり、この接続は読み取り専用ではありません。 -->
        <developerConnection>
            scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
        </developerConnection>
        <!--現在のコードのタグ、開発段階ではデフォルトでHEAD -->
        <tag />
        <!--プロジェクトの閲覧可能なSCMリポジトリ(例えばViewVCやFisheye)のURLを指します。 -->
        <url>http://svn.baidu.com/banseon</url>
    </scm>
    <!--プロジェクトが属する組織の様々な属性を説明する。Mavenが生成するドキュメントは、 -->
    <organization>
        <!--組織のフルネーム -->
        <name>demo</name>
        <!--組織のホームページのURL -->
        <url>http://www.baidu.com/banseon</url>
    </organization>
    <!--プロジェクトをビルドするために必要な情報 -->
    <build
        <!--この要素はプロジェクトのソースコードディレクトリを設定しており、プロジェクトをビルドする際に、ビルドシステムはこのディレクトリ内のソースコードをコンパイルします。このパスはpom.xmlからの相対パスです。 -->
        <sourceDirectory />
        <!--この要素はプロジェクトのスクリプトソースコードディレクトリを設定しており、このディレクトリとソースコードディレクトリは異なります:ほとんどの場合、このディレクトリの内容は出力ディレクトリにコピーされます(スクリプトはコンパイルされるのではなく、解釈されるからです)。 -->
        <scriptSourceDirectory />
        <!--この要素はプロジェクトのユニットテストに使用されるソースコードディレクトリを設定します。テストプロジェクトのときに、ビルドシステムはこのディレクトリ内のソースコードをコンパイルします。このパスはpom.xmlに対して相対的なパスです。 -->
        <testSourceDirectory />
        <!--コンパイルされたアプリケーションclassファイルが保存されるディレクトリ。 -->
        <outputDirectory />
        <!--コンパイルされたテストclassファイルが保存されるディレクトリ。 -->
        <testOutputDirectory />
        <!--プロジェクトから使用されるビルド拡張を一連に使用します -->
        <extensions>
            <!--使用されているビルド拡張を説明しています。 -->
            <extension>
                <!--ビルド拡張のgroupId -->
                <groupId />
                <!--ビルド拡張のartifactId -->
                <artifactId />
                <!--ビルド拡張のバージョン -->
                <version />
            </extension>
        </extensions>
        <!--プロジェクトにターゲットが指定されていない場合(Maven2 (ビルド段階と呼ばれる)時のデフォルト値 -->
        <defaultGoal />
        <!--この要素はプロジェクトに関連するすべてのリソースパスリストを説明しています。例えば、プロジェクトに関連する属性ファイルなど、これらのリソースは最終のパッケージに含まれます。 -->
        <resources
            <!--この要素はプロジェクトに関連するまたはテストに関連するすべてのリソースパスを説明しています -->
            <resource
                <!-- リソースのターゲットパスを説明しています。このパスはtargetに対して相対的です/classesディレクトリ(例えば${project.build.outputDirectory})。例を示します 
                    子、特定のパッケージ(org.apache.maven.messages)にリソースを配置する場合は、この要素をorgに設定する必要があります/apache/maven /messages。しかし、リソースをソースコードディレクトリ構造に配置するだけなら、この設定は必要ありません。 -->
                <targetPath />
                <!--パラメータ名をパラメータ値で置き換えるかどうか。パラメータ値はproperties要素またはフィルタ要素内のファイルで設定された属性から取得されます。ファイルはfilters要素内にリストされています。 -->
                <filtering />
                <!--リソースを保存するディレクトリの説明、このパスはPOMパスに対して相対的です -->
                <directory />
                <!--含まれるパターンのリスト、例えば**/*.xml. -->
                <includes />
                <!--除外されるパターンのリスト、例えば**/*.xml -->
                <excludes />
            </resource>
        </resources>
        <!--この要素はユニットテストに関連するすべてのリソースパスを説明しています。例えば、ユニットテストに関連する属性ファイルなどです。 -->
        <testResources
            <!--この要素はテストに関連するすべてのリソースパスを説明しています。buildを参照してください/resources/resource要素の説明 -->
            <testResource
                <targetPath />
                <filtering />
                <directory />
                <includes />
                <excludes />
            </testResource>
        </testResources>
        <!--ビルドで生成されるすべてのファイルを保存するディレクトリ -->
        <directory />
        <!--生成されるコンポーネントのファイル名、デフォルト値は${artifactId}-${version}。 -->
        <finalName />
        <!--フィルタリングスイッチがオンの時に使用されるフィルタ属性ファイルリスト -->
        <filters />
        <!--子プロジェクトが参照できるデフォルトプラグイン情報。このプラグイン設定オプションは参照されるまで解析またはライフサイクルにバインドされません。指定されたプラグインのいかなるローカル設定もここでの設定をオーバーライドします -->
        <pluginManagement
            <!--使用されるプラグインリスト。 -->
            <plugins>
                <!--プラグイン要素はプラグインが必要とする情報を含んでいます。 -->
                <plugin>
                    <!--プラグインのリポジトリ内のgroup ID -->
                    <groupId />
                    <!--プラグインがリポジトリ内のartifact ID -->
                    <artifactId />
                    <!--使用されるプラグインのバージョン(またはバージョン範囲) -->
                    <version />
                    <!--プラグインからMavenエクステンション(例えば、パッケージングやタイププロセッサ)をダウンロードするかどうか。パフォーマンスの理由から、本当に必要な場合にのみこの要素が設定されます。 -->
                    <extensions />
                    <!--ビルドライフサイクル中にターゲットのセットを実行する設定。各ターゲットには異なる設定が含まれることがあります。 -->
                    <executions
                        <!--execution要素は、プラグインの実行に必要な情報を含んでいます -->
                        <execution
                            <!--実行ターゲットの識別子、ビルドプロセス中のターゲットを識別するために使用される、または継承プロセス中に統合する必要がある実行ターゲットを一致させるために使用されます。 -->
                            <id />
                            <!--ターゲットがバインドされるビルドライフサイクルのフェーズ。省略すると、デフォルトのフェーズにバインドされます。 -->
                            <phase />
                            <!--設定の実行ターゲット -->
                            <goals />
                            <!--設定が子POMに伝播されるかどうか -->
                            <inherited />
                            <!--DOMオブジェクトとしての設定 -->
                            <configuration />
                        </execution>
                    </executions>
                    <!--プラグインを導入するプロジェクトが必要とする追加の依存関係 -->
                    <dependencies>
                        <!--参见dependencies/dependency元素 -->
                        <dependency>
                            ......
                        </dependency>
                    </dependencies>
                    <!--どの設定が子プロジェクトに伝播されるかどうか -->
                    <inherited />
                    <!--DOMオブジェクトとしての設定 -->
                    <configuration />
                </plugin>
            </plugins>
        </pluginManagement>
        <!--使用されるプラグインのリスト -->
        <plugins>
            <!--buildを参照してください/pluginManagement/plugins/plugin要素 -->
            <plugin>
                <groupId />
                <artifactId />
                <version />
                <extensions />
                <executions
                    <execution
                        <id />
                        <phase />
                        <goals />
                        <inherited />
                        <configuration />
                    </execution>
                </executions>
                <dependencies>
                    <!--参见dependencies/dependency元素 -->
                    <dependency>
                        ......
                    </dependency>
                </dependencies>
                <goals />
                <inherited />
                <configuration />
            </plugin>
        </plugins>
    </build>
    <!--リストに含まれるプロジェクトのビルドプロファイル。アクティブ化される場合、ビルド処理を変更します。 -->
    <profiles>
        <!--環境パラメータまたはコマンドラインパラメータに基づいて特定のビルド処理をアクティブ化する -->
        <profile>
            <!--ビルド設定のユニークな識別子。コマンドラインでのアクティブ化に使用されるだけでなく、継承時に同じ識別子を持つプロファイルを統合するために使用されます。 -->
            <id />
            <!--プロファイルを自動的にトリガーする条件の論理。Activationはプロファイルの開始の鍵です。プロファイルの力は、特定の環境で特定の値を自動的に使用できることから来ています;これらの環境はactivation要素で指定されます。activation要素はプロファイルをアクティブ化する唯一の方法ではありません。 -->
            <activation>
                <!--プロファイルがデフォルトでアクティブ化されるかどうかのフラグ -->
                <activeByDefault />
                <!--一致するjdkが検出されると、プロファイルがアクティブ化されます。例えば、1.4JDKをアクティブ化1.4、1.4.0_2、ではなく!1.4アクティブ化するJDKのバージョンが1.4最初のJDK。 -->
                <jdk />
                <!--一致するオペレーティングシステムの属性が検出されると、プロファイルがアクティブ化されます。os要素は、オペレーティングシステムに関連する属性を定義できます。 -->
                <os>
                    <!--プロファイルをアクティブ化するオペレーティングシステムの名前 -->
                    <name>Windows XP</name>
                    <!--プロファイルをアクティブ化するオペレーティングシステムが属する家族(例えば、'windows') -->
                    <family>Windows</family>
                    <!--プロファイルをアクティブ化するオペレーティングシステムのアーキテクチャ -->
                    <arch>x86</arch>
                    <!--プロファイルをアクティブ化するオペレーティングシステムのバージョン -->
                    <version>5.1.2600</version>
                </os>
                <!--Mavenがある属性(その値はPOM内で${名称}を使用して参照可能)を検出した場合、対応する名称と値を持っており、プロファイルがアクティブ化されます。値フィールドが空の場合、属性名フィールドがあるとプロファイルがアクティブ化されます。それ以外の場合、大文字小文字を区別して属性値フィールドと一致します。 -->
                <property>
                    <!--profileを有効にする属性の名前 -->
                    <name>mavenVersion</name>
                    <!--profileを有効にする属性の値 -->
                    <value2.0.3</value>
                </property>
                <!--ファイル名を提供し、そのファイルの存在または不存在を確認してprofileを有効にします。missingはファイルの存在を確認し、存在しない場合にprofileを有効にします。一方、existsはファイルの存在を確認し、存在する場合にprofileを有効にします。 -->
                <file
                    <!--指定されたファイルが存在する場合、profileを有効にします。 -->
                    <exists/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
                    </exists>
                    <!--指定されたファイルが存在しない場合、profileを有効にします。 -->
                    <missing/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
                    </missing>
                </file>
            </activation>
            <!--プロジェクトを構築するために必要な情報です。build要素を参照してください -->
            <build
                <defaultGoal />
                <resources
                    <resource
                        <targetPath />
                        <filtering />
                        <directory />
                        <includes />
                        <excludes />
                    </resource>
                </resources>
                <testResources
                    <testResource
                        <targetPath />
                        <filtering />
                        <directory />
                        <includes />
                        <excludes />
                    </testResource>
                </testResources>
                <directory />
                <finalName />
                <filters />
                <pluginManagement
                    <plugins>
                        <!--buildを参照してください/pluginManagement/plugins/plugin要素 -->
                        <plugin>
                            <groupId />
                            <artifactId />
                            <version />
                            <extensions />
                            <executions
                                <execution
                                    <id />
                                    <phase />
                                    <goals />
                                    <inherited />
                                    <configuration />
                                </execution>
                            </executions>
                            <dependencies>
                                <!--参见dependencies/dependency元素 -->
                                <dependency>
                                    ......
                                </dependency>
                            </dependencies>
                            <goals />
                            <inherited />
                            <configuration />
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <!--buildを参照してください/pluginManagement/plugins/plugin要素 -->
                    <plugin>
                        <groupId />
                        <artifactId />
                        <version />
                        <extensions />
                        <executions
                            <execution
                                <id />
                                <phase />
                                <goals />
                                <inherited />
                                <configuration />
                            </execution>
                        </executions>
                        <dependencies>
                            <!--参见dependencies/dependency元素 -->
                            <dependency>
                                ......
                            </dependency>
                        </dependencies>
                        <goals />
                        <inherited />
                        <configuration />
                    </plugin>
                </plugins>
            </build>
            <!--モジュール(時にはサブプロジェクトと呼ばれます)はプロジェクトの一部として構築されます。リストにある各モジュール要素は、そのモジュールのディレクトリへの相対パスを指します -->
            <modules />
            <!--依存関係やエクステンションのリモートリポジトリリストを検出します -->
            <repositories>
                <!--repositoriesを参照してください/repository元素 -->
                <repository>
                    <releases>
                        <enabled />
                        <updatePolicy />
                        <checksumPolicy />
                    </releases>
                    <snapshots>
                        <enabled />
                        <updatePolicy />
                        <checksumPolicy />
                    </snapshots>
                    <id />
                    <name />
                    <url />
                    <layout />
                </repository>
            </repositories>
            <!--構築およびレポートに使用されるプラグインのリモートリポジトリリストを検出します -->
            <pluginRepositories>
                <!--リモートプラグインリポジトリに接続する必要がある情報を含んでいます。参照してくださいrepositories/repository元素 -->
                <pluginRepository>
                    <releases>
                        <enabled />
                        <updatePolicy />
                        <checksumPolicy />
                    </releases>
                    <snapshots>
                        <enabled />
                        <updatePolicy />
                        <checksumPolicy />
                    </snapshots>
                    <id />
                    <name />
                    <url />
                    <layout />
                </pluginRepository>
            </pluginRepositories>
            <!--この要素はプロジェクトに関連するすべての依存関係を記述します。これらの依存関係はプロジェクトのビルドプロセスの各ステップを構成します。これらはプロジェクトで定義されたリポジトリから自動的にダウンロードされます。詳細については、プロジェクト依存関係メカニズムを参照してください -->
            <dependencies>
                <!--参见dependencies/dependency元素 -->
                <dependency>
                    ......
                </dependency>
            </dependencies>
            <!--使用することを推奨しません。現在Mavenはこの要素を無視しています。 -->
            <reports />
            <!--この要素は、レポートプラグインを使用してレポートを生成する規格を含んでいます。ユーザーが「mvn site」を実行すると、これらのレポートが実行されます。ページのナビゲーションバーですべてのレポートのリンクを見ることができます。reporting要素を参照してください -->
            <reporting>
                ......
            </reporting>
            <!--dependencyManagement要素を参照してください -->
            <dependencyManagement>
                <dependencies>
                    <!--参见dependencies/dependency元素 -->
                    <dependency>
                        ......
                    </dependency>
                </dependencies>
            </dependencyManagement>
            <!--distributionManagement要素を参照してください -->
            <distributionManagement>
                ......
            </distributionManagement>
            <!--properties要素を参照してください -->
            <properties />
        </profile>
    </profiles>
    <!--モジュール(時にはサブプロジェクトと呼ばれます)はプロジェクトの一部として構築されます。リストにある各モジュール要素は、そのモジュールのディレクトリへの相対パスを指します -->
    <modules />
    <!--依存関係やエクステンションのリモートリポジトリリストを検出します -->
    <repositories>
        <!--リモートリポジトリに接続する必要がある情報を含んでいます -->
        <repository>
            <!--リモートリポジトリ内のリリースバージョンのダウンロードをどのように処理するか -->
            <releases>
                <!--trueまたはfalseは、このリポジトリが特定のタイプのコンポーネント(リリース版、快照版)のダウンロードに対して有効化されているかどうかを示します -->
                <enabled />
                <!--この要素は更新が発生する頻度を指定します。MavenはローカルPOMとリモートPOMのタイムスタンプを比較します。オプションは:always(常に)、daily(デフォルト、毎日)、interval:X(ここでのXは分単位の時間間隔)、またはnever(決して)です -->
                <updatePolicy />
                <!--Mavenがコンポーネントの検証ファイルの確認に失敗した場合にどのように対処するか:ignore(無視)、fail(失敗)、またはwarn(警告) -->
                <checksumPolicy />
            </releases>
            <!-- リモートリポジトリ内の快照バージョンのダウンロードをどのように処理するか 
                ポリシーです。例えば、開発目的のみに快照バージョンのダウンロードをサポートするように決定する人もいます。参照してくださいrepositories/repository/releases元素 -->
            <snapshots>
                <enabled />
                <updatePolicy />
                <checksumPolicy />
            </snapshots>
            <!--リモートリポジトリのユニークな識別子です。settings.xmlファイルで設定されたリモートリポジトリに一致させることができます -->
            <id>banseon-repository-proxy</id>
            <!--リモートリポジトリの名前 -->
            <name>banseon-repository-proxy</name>
            <!--リモートリポジトリURL、プロトコルによっては//hostname/path形式 -->
            <url>http://192.168.1.169:9999/repository/</url>
            <!-- コンポーネントの位置と並び替えに使用されるリポジトリレイアウトのタイプ-デフォルト(デフォルト)またはlegacy(古い)のいずれかです。Maven 2リポジトリにデフォルトのレイアウトを提供しています; 
                そして、Maven 1.xには異なるレイアウトがあります。この要素を使用してレイアウトがdefault(デフォルト)かlegacy(古い)であることを指定できます -->
            <layout>default</layout>
        </repository>
    </repositories>
    <!--構築およびレポートに使用されるプラグインのリモートリポジトリリストを検出します -->
    <pluginRepositories>
        <!--リモートプラグインリポジトリに接続する必要がある情報を含んでいます。参照してくださいrepositories/repository元素 -->
        <pluginRepository>
            ......
        </pluginRepository>
    </pluginRepositories>
 
 
    <!--この要素はプロジェクトに関連するすべての依存関係を記述します。これらの依存関係はプロジェクトのビルドプロセスの各ステップを構成します。これらはプロジェクトで定義されたリポジトリから自動的にダウンロードされます。詳細については、プロジェクト依存関係メカニズムを参照してください -->
    <dependencies>
        <dependency>
            <!--依存関係のgroup ID -->
            <groupId>org.apache.maven</groupId>
            <!--依存関係のartifact ID -->
            <artifactId>maven-artifact</artifactId>
            <!--依存関係のバージョン番号。Maven 2中、バージョン範囲としても設定できます。 -->
            <version>3.8.1</version>
            <!-- 依存関係のタイプ、デフォルトのタイプはjarです。通常、依存関係のファイルの拡張子を表しますが、例外もあります。タイプは別の拡張子やカテゴライザーにマッピングされることがあります。タイプは通常、使用されるパッケージ形式に対応しています 
                例外もあります。いくつかのタイプの例:jar、war、ejb-clientとtest-jar。extensionsがtrueに設定されている場合、plugin内で新しいタイプを定義できます。したがって、前のタイプのインスタンスは不完全です。 -->
            <type>jar</type>
            <!-- 依存関係のカテゴライザー。カテゴライザーは、同じPOMに属するが異なるビルド方法のコンポーネントを区別できます。カテゴライザー名はファイル名のバージョン番号の後に付加されます。例えば、2つの独立したコンポーネントを構築したい場合 
                JAR、一方はJavaを使用 1.4コンパイラ、もう一方はJavaを使用 6コンパイラを使用して、カテゴライザーを使用して2つの独立したJARコンポーネントを生成できます。 -->
            <classifier></classifier>
            <!--依存関係範囲。プロジェクトのリリースプロセス中に、含めるべきコンポーネントを決定するのに役立ちます。詳細については、依存関係メカニズムを参照してください - compile :デフォルトの範囲、コンパイルに使用します - provided:コンパイルに似ていますが、期待されるJDKまたはコンテナが提供する場合やclasspathに似た場合があります 
                - runtime: 実行時に使用する必要があります - test: testタスク時に使用します - system: 外部から対応する要素を提供する必要があります。systemPathを使用して取得します 
                - systemPath: 範囲system専用です。対応するパスを提供します - optional: プロジェクト自身が依存関係として使用された場合、依存関係の伝播を標識します。連続依存関係時の使用に適しています -->
            <scope>test</scope>
            <!--system範囲専用です。注意してください、この要素の使用は推奨されず、新しいバージョンではこの要素がオーバーライドされる可能性があります。この要素はファイルシステム上のパスに依存指定を行います。絶対パスを使用する必要がありますが、相対パスではありません。属性マッチングを使用して絶対パスを指定することをお勧めします、例えば${java.home}。 -->
            <systemPath></systemPath>
            <!--依存関係の計算中に、依存関係のコンポーネントリストから除外される依存関係コンポーネントセットをリストアップします。これは、Mavenに指定されたプロジェクトのみに依存し、プロジェクトの依存関係に依存しないことを伝えることを意味します。この要素はバージョン衝突の解決に主に使用されます -->
            <exclusions>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
            <!--オプションの依存関係、プロジェクトBでC依存関係をオプションとして宣言している場合、依存関係を持つプロジェクト(例えばプロジェクトA)ではCの依存関係を明示的に参照する必要があります。オプションの依存関係は依存関係の伝播性を阻害します。 -->
            <optional>true</optional>
        </dependency>
    </dependencies>
    <!--使用することを推奨しません。現在Mavenはこの要素を無視しています。 -->
    <reports></reports>
    <!--この要素はレポートプラグインを使用してレポートを生成する規格を説明します。ユーザーが「mvn site」を実行すると、これらのレポートが実行されます。ページのナビゲーションバーですべてのレポートのリンクが見られます。 -->
    <reporting>
        <!--true、それでは、サイトにはデフォルトのレポートが含まれません。これは「プロジェクト情報」メニュー内のレポートも含みます。 -->
        <excludeDefaults />
        <!--生成されるすべてのレポートをどこに保存するか。デフォルトは${project.build.directory}です/site。 -->
        <outputDirectory />
        <!--使用されるレポートプラグインとその設定。 -->
        <plugins>
            <!--plugin要素はレポートプラグインが必要とする情報を含みます -->
            <plugin>
                <!--レポートプラグインのリポジトリ内のgroup ID -->
                <groupId />
                <!--レポートプラグインのリポジトリ内のartifact ID -->
                <artifactId />
                <!--使用されているレポートプラグインのバージョン(またはバージョン範囲) -->
                <version />
                <!--どの設定が子プロジェクトに伝播されるかどうか -->
                <inherited />
                <!--レポートプラグインの設定 -->
                <configuration />
                <!--一組のレポートの複数の規格、各規格には異なる設定が可能です。一つの規格(レポートコレクション)は一つの実行ターゲットに対応します。例えば、1、2、3、4、5、6、7、8、9のレポート。1、2、5Aレポートコレクションを構成、一つの実行ターゲットに対応。2、5、8Bレポートコレクションを構成、別の実行ターゲットに対応 -->
                <reportSets>
                    <!--レポートの集合を表し、その集合を作成する設定 -->
                    <reportSet>
                        <!--レポートコレクションのユニークな識別子、POMが引き継がれる際に使用されます -->
                        <id />
                        <!--レポートコレクションを作成する際に使用されるレポートの設定 -->
                        <configuration />
                        <!--設定が子POMsに引き継がれるかどうかの設定 -->
                        <inherited />
                        <!--この集合に使用されているレポートはどれでしょうか -->
                        <reports />
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>
    <!-- このプロジェクトのすべてのサブプロジェクトに引き継がれるデフォルトの依存関係情報です。この部分の依存関係情報はすぐに解析されません。代わりに、サブプロジェクトが依存関係を宣言する際(group IDとartifact IDが必須です)に使用されます。 
        ID情報)(group IDとartifact ID以外の情報が記述されていない場合、group IDとartifact IDを基にここに記述された依存関係をマッチングし、ここに記述された依存関係を使用します。 -->
    <dependencyManagement>
        <dependencies>
            <!--参见dependencies/dependency元素 -->
            <dependency>
                ......
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 -->
    <distributionManagement>
        <!--部署项目产生的构件到远程仓库需要的信息 -->
        <repository>
            <!--是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素 -->
            <uniqueVersion />
            <id>banseon-maven2</id>
            <name>banseon maven2</name>
            <url>file://${basedir}/target/deploy</url>
            <layout />
        </repository>
        <!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
        <snapshotRepository>
            <uniqueVersion />
            <id>banseon-maven2</id>
            <name>Banseon-maven2 Snapshot Repository</name>
            <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
            <layout />
        </snapshotRepository>
        <!--部署项目的网站需要的信息 -->
        <site>
            <!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 -->
            <id>banseon-site</id>
            <!--部署位置的名称 -->
            <name>business api website</name>
            <!--部署位置的URL,按protocol://hostname/path形式 -->
            <url>
                scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
            </url>
        </site>
        <!--プロジェクトのダウンロードページのURL。この要素がない場合、ユーザーはホームページを参照すべきです。この要素を使用する理由は:ライセンス制限によりリポジトリにないコンポーネントを特定するために使用されます。 -->
        <downloadUrl />
        <!--コンポーネントが新しいgroup IDとartifact ID(コンポーネントが新しい場所に移動した)を持つ場合、ここにコンポーネントのリロケーション情報をリストします。 -->
        <relocation>
            <!--コンポーネントの新しいgroup ID -->
            <groupId />
            <!--コンポーネントの新しいartifact ID -->
            <artifactId />
            <!--コンポーネントの新しいバージョン番号 -->
            <version />
            <!--ユーザーに表示する、移動に関する追加情報、例えば理由。 -->
            <message />
        </relocation>
        <!-- このコンポーネントがリモートリポジトリ内の状態を示します。ローカルプロジェクト内にこの要素を設定することはできません。なぜなら、これはツールが自動的に更新するためです。有効な値は:none(デフォルト)、converted(リポジトリ管理者が 
            Maven 1 変換された)、partner(直接パートナーMavenから 2同期された)、deployed(Mavenから 2例:部署部門)、verified(確認済みで最終的な)。 -->
        <status />
    </distributionManagement>
    <!--名前を値で置き換え、PropertiesはPOM全体で使用できます。また、トリガー条件としても使用できます(settings.xml設定ファイル内のactivation要素の説明を参照)。フォーマットは<name>value</name>。 -->
    <properties />
</project>