Maven-pom
Maven-POM
POMはProject Object Modelの略です。 これは、Mavenの基本的な作業単位です。 これは、pom.xmlとしてプロジェクトのベースディレクトリにあるXMLファイルです。
POMには、プロジェクトに関する情報と、Mavenがプロジェクトをビルドするために使用するさまざまな構成の詳細が含まれています。
POMには目標とプラグインも含まれています。 タスクまたは目標の実行中、Mavenは現在のディレクトリでPOMを探します。 POMを読み取り、必要な構成情報を取得して、目標を実行します。 POMで指定できる構成の一部は次のとおりです-
- プロジェクトの依存関係
- プラグイン
- 目標
- ビルドプロファイル
- プロジェクトバージョン
- 開発者
- メーリングリスト
POMを作成する前に、プロジェクトの group (groupId)、 name (artifactId)、およびバージョンを決定する必要があります。これらの属性は、リポジトリ内のプロジェクトを一意に識別するのに役立ちます。
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.0
http://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>
</project>
プロジェクトごとに1つのPOMファイルが必要であることに注意してください。
- すべてのPOMファイルには、 project 要素と3つの必須フィールド: groupId、artifactId、version が必要です。
- リポジトリ内のプロジェクト表記は groupId:artifactId:version です。
- POMの最小要件-
シニア
ノードと説明
1
プロジェクトルート
これはプロジェクトのルートタグです。 apacheスキーマやw3.org仕様などの基本的なスキーマ設定を指定する必要があります。
2
モデルバージョン
モデルバージョンは4.0.0である必要があります。
3
*groupId*
これはプロジェクトのグループのIDです。 これは通常、組織またはプロジェクト間で一意です。 たとえば、銀行グループcom.company.bankには、すべての銀行関連プロジェクトがあります。
4
*artifactId*
これはプロジェクトのIDです。 通常、これはプロジェクトの名前です。 たとえば、消費者銀行。 groupIdとともに、artifactIdはリポジトリ内のアーティファクトの場所を定義します。
5
バージョン
これはプロジェクトのバージョンです。 groupIdとともに、アーティファクトのリポジトリ内でバージョンを相互に分離するために使用されます。 たとえば-
*com.company.bank:consumer-banking:1.0*
- com.company.bank:consumer-banking:1.1。*
スーパーPOM
スーパーPOMはMavenのデフォルトPOMです。 すべてのPOMは、(明示的に定義されているかどうかにかかわらず)親またはデフォルトから継承します。 このベースPOMは Super POM と呼ばれ、デフォルトで継承される値が含まれています。
Mavenは、効果的なPOM(スーパーポンからの構成とプロジェクト構成)を使用して、関連する目標を実行します。 開発者がpom.xmlで最小限の構成詳細を指定するのに役立ちます。 構成は簡単にオーバーライドできますが。
スーパーPOMのデフォルト設定を確認する簡単な方法は、次のコマンドを実行することです: mvn help:effective-pom
コンピューター上の任意のディレクトリにpom.xmlを作成します。上記のサンプルpomのコンテンツを使用します。
以下の例では、C:\ MVN \ projectフォルダーにpom.xmlを作成しました。
コマンドコンソールを開き、pom.xmlを含むフォルダーに移動して、次の mvn コマンドを実行します。
C:\MVN\project>mvn help:effective-pom
Mavenは処理を開始し、有効なポンを表示します。
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO] task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]
.....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------
継承、補間、およびプロファイルが適用された後、結果としてコンソールに表示される有効なPOM。
<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2015-04-09T11:41:51 -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/-->
<!-- -->
<!-- ==============================================-->
<!-- ==============================================-->
<!-- -->
<!-- Effective POM for project -->
<!-- '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
http://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-0</mergeId>
<directory>C:\MVN\project\src\main\resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<mergeId>resource-1</mergeId>
<directory>C:\MVN\project\src\test\resources</directory>
</testResource>
</testResources>
<directory>C:\MVN\project\target</directory>
<finalName>project-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>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</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を順番に作成します