なぜmaven-2を使いますか?


本文は前の一枚に続いて、マヴェンの学習ノートを記録します.http://jackycheng2007.iteye.com/blog/923791
[/url]
法宝2.POMプロジェクトの対象モデル-継続
プロジェクト引き継ぎ
前に述べましたが、プロジェクトはマベンゼンではobjectと見なされています.この機能はとても役立ちます.私たちのプロジェクトのprofileも再利用できるようになります.考えてみてください.もし似たようなプロジェクトがたくさんあったら、たとえばssh開発の一連のプロジェクトを採用して、あなたの各プロジェクトのpomの中には必ず重複する部分がたくさんあります.継承があれば、これらの共用部分を抽出して、各サブプロジェクトを引き継ぎ、再利用の目的を達成することができます.本来なら、継承はis-aの関係を反映しています.supperプロジェクトの下のサブプロジェクトは生まれつきsupperプロジェクトとis-aの関係があります.このように同じく乱用して継承したとは言えなくて、はは.
どのように継承しますか
前の記事の最後の例に続き、彼の下にサブモジュールがあれば、それを引き継ぐ必要がある:

<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>my-module</artifactId>
</project>
このサブモジュールは親モジュールのgroupidやversionなどの情報を引き継いでいます.ちょっと待ってください.ここに問題があります.証拠になる
<groupId>comp.mycompany.apサブモジュールはどうやってsupperのpomを見つけますか?
はい、supperプロジェクトがすでにlocalのrepositoryにインストールされていたり、supperのpomが予約されたディレクトリ、つまりサブモジュールの上のレベルのディレクトリ(以下のように)すればいいです.
参照
my-app|--my-module
      |   `-- pom.xml
      `-- pom.xml
もし、あいにくなら、この二つは全部ではないですか?たとえば:
参照
...
|--my-module
𞓜   `-- pom.xml
`--parent
     `-- pom.xml
私たちは自分で席を指定できます.

<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
    <relativePath>.../parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>my-module</artifactId>
</project>
プロジェクト集合
プロジェクト継承により、サブプロジェクトを再管理または構築する際には、parentプロジェクトのpomを利用することができます.逆に?もし完全なプロジェクトを構築するなら、多くのサブプロジェクトをまとめて包装する必要がありますか?Project Agregationはこの問題を解決したのです.
どうしますか?2点を満たす必要があります
参照
親プロジェクトのpomの中のpackagingの値は「pom」とします.
親プロジェクトのpomにサブプロジェクトのカタログを作成します.
もし私たちがmy-moduleをmy-apに集めたいなら、次のように修正します.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>my-module</module>
  </modules>
</project>
上には、経路が書かれていないのも、mavenのカタログに従うと約束されているからです.もしそうでないなら、書かなければなりません.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>../my-module</module>
  </modules>
</project>
約束はいい方法です.コードを節約して、共通認識を形成しやすいです.
Project Interpolation and Varables-使用変数
pomでは、パスなど、同じ文字列のセグメントを複数の場所で使用することができます.変数の声明と引用をサポートすることで、ハードコードを防ぐことができます.
変数はどのように参照しますか?下を見てください

<version>${project.version}</version>
ドル記号に大かっこをつけて、点を使って等級別にアクセスします.とても便利です.継承関係があれば、サブクラスの値を採用します.
どのような変数がありますか?
Project Model Varables
pom内のどの単一の値の要素も変数として参照できます.
参照
$project.groupId、$project.version、{project.build.sourceDirectory}
Special Varables
$basedir、現在のプロジェクトの所在ディレクトリ
$project.baseUri、現在のプロジェクトの所在ディレクトリURI.Since Maven 2.1.0
$maven.build.timestamp、プロジェクトのbuildの開始時間.Since Maven 2.10-M 1
Propties
pomで定義されているProptiesを変数として参照することもできます.

<project>
  ...
  <properties>
    <mavenVersion>2.1</mavenVersion>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-project</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
  </dependencies>
  ...
</project>
Proptiesを通じて、いくつかの変数をカスタマイズできます.ハハ.