06集約と継承


一、Mavenマルチモジュール1つのプロジェクトに複数のモジュールがある場合、1つのコマンドを使用して複数のモジュールを構築したいと考えています.Maven集約は、そのニーズを満たすためです.2つのモジュールAとBがあるとします.コマンドを使用してAとBの2つのモジュールを構築するには、Cという追加のモジュールを作成し、そのモジュールを通じてプロジェクト全体のすべてのモジュールを構築する必要があります.モジュールとして、独自のPOMファイルが必要ですが、集約プロジェクトとして、その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.test</groupId>
  <artifactId>C</artifactId>
  <packaging>pom</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <modules>
  	<module>A</module>
  	<module>B</module>
  </modules>
</project>

上記のPOMファイルには、パッケージタイプがpomでなければならない点と、modules要素がある点の2つの特殊な点があります.通常、ユーザーがプロジェクトを構築しやすいように、集約モジュールはプロジェクトディレクトリの最上位に配置され、他のモジュールは集約モジュールのサブディレクトリとして使用されます.平行ディレクトリを使用する場合は、集約モジュールのPOMを変更します.
<modules>
	<module>../A</module>
	<module>../B</module>
</modules>

これにより、moduleの内容は、モジュール名ではなく、他のモジュールが存在するディレクトリであることがわかります.
 
 
二、継承1.親モジュールとサブモジュールの1つのプロジェクトの複数のモジュールには、多くの構成が繰り返されることが多い.オブジェクト向けプログラミングでは、プログラマはコードの重複をある程度減らすことができます.Mavenにも似たような継承メカニズムがあります.親モジュールのPOMには、パッケージタイプが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>
  <parent>
    <artifactId>A</artifactId>
    <groupId>com.test</groupId>
    <version>0.0.1-SNAPSHOT</version>
	<relativePath>./pom.xml</relativePath>
  </parent>
  <artifactId>A</artifactId>
</project>

上記のPOMファイルのparentは親モジュールを示しています.relativePath要素は親モジュールpomを示す.xmlファイルの場所.デフォルトは、現在のモジュールの上位ディレクトリです.サブモジュールはgroupIdとartifactIdを指定しなくてもよい.
 
2.継承可能なPOM要素の多くは継承可能です(一部の要素が継承できないことを意味しますか?)
 
3.依存管理サブモジュールは親モジュールの依存を継承しますが、すべてのサブモジュールが親モジュールのすべての依存を必要とするわけではありません.この場合、dependencyManagement要素を使用します.dependencyManagementで宣言された依存は実際の依存を導入しませんが、dependenciesでの依存の使用を制約できます.サブモジュールは、依存するgroupIdとartifactIdを指定するだけで、依存を指定すると表示されます.
 
4.プラグイン管理pluginManagementはdependencyManagementと同様に、プラグインを管理します.
 
三、集約と継承の関係は両者の目的が異なり、集約は構築を容易にするためであり、継承は重複配置を解消するためである.集約モジュールの場合、どのモジュールが集約されるかを知る必要がありますが、集約されたモジュールはこの集約モジュールの存在を知りません.リレーションシップを継承する親モジュールでは、どのサブモジュールが継承されているか分かりませんが、サブモジュールは自分の親モジュールを知る必要があります.現実的には、通常、pomのタイプをパッケージ化するモジュールが集約モジュールとなり、親モジュールとなる.
四、原子炉
1.概説すべての原子炉は1つのマルチモジュールプロジェクトの中で、すべてのモジュールからなる1つの構築構造である.各モジュール間の依存関係により、Mavenは自動的に原子炉を生成し、両モジュールが互いに依存しないように注意する.
2.原子炉を裁断する一般的に、ユーザーはプロジェクト全体またはモジュールのモジュールを構築することを選択しますが、時間がかかると、すべてのモジュールではなく、いくつかのモジュールだけを構築したいと思っています.-am--also-makeは、列挙されたモジュールの依存モジュール-amd--also-make-dependentsを同時に構築し、列挙されたモジュールに依存するモジュール-pl--projecctsに基づいて指定されたモジュールを構築し、モジュール間をカンマ区切り-rf--resume-fronで指定されたモジュールから構築し、原子炉以前のモジュールは構築されなかった.