3

私はいくつかの独立したプロジェクトを持っています (それらは同じ親を持っていません) が、同じライブラリ セットを使用しています。例えば

  • プロジェクトA
  • プロジェクトB
  • プロジェクトC

これらのプロジェクトはすべて、Spring、Postgres、Hibrenate、Tomcat を使用しています。私がやりたいことは、次の行に沿って依存関係の名前付きコレクションの概念を導入することです。

  • TSHP 1.0 - tomcat 6.0.35、Spring 3.0.7、Hibernate 3.6.8 ... などで構成される場合があります
  • TSHP 2.0 - tomcat 7.0.32、Spring 3.1.2、Hibernate 4.1.7 などで構成される場合があります。

プロジェクト A は TSHP 1.0 に依存している、プロジェクト B は TSHP 2.0 に依存している、などのようなことを言いたいと思います。このタイプのセットアップの値は次のとおりです。

  • 会社のグループとして使用される共通ライブラリのセットを標準化するのは簡単なので、プロジェクト全体の監査は簡単です。依存関係の名前付きグループを使用する
  • 名前付きグループに単一の依存関係を含めるだけで、そのタイプのアプリケーションに必要なすべてを取得できるため、標準クラスパスを使用して新しいプロジェクトを開始するのは非常に簡単です。名前付きクラスパス内の jar は、相互にうまく機能します。

このタイプのセットアップは maven3 で実行できますか? もしそうなら、どのように?

更新:親の pom セットアップで見られる問題は、POM の親は 1 つしか存在できないことですが、次のように、標準の名前付きクラスパスがいくつかある可能性があります。

  • WEB_SECURITY - 一般的な Web セキュリティの問題から保護するために使用される jar のコレクションである可能性があるため、Web アプリには TSHP + WEB_SECURITY が含まれ、バッチ アプリには TSHP のみが含まれる場合があります。コンポジションは継承よりも優れており、はるかに柔軟です。
4

2 に答える 2

2

「プラットフォーム」、つまり一緒に使用したい依存関係のグループの新しいプロジェクトを作成します。そのパッケージ タイプは次のとおりpomです。

<project>
    <groupId>…&lt;/groupId>
    <artifactId>tshp-platform</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <dependencies>
      <!-- Dependencies for TSHP 1.0 -->
    </dependencies>
…

the pom のリリース 1.0。次に、TSHP 2.0 のバージョンと依存関係を更新します。それからそれを解放します。

これで、プロジェクトは pom プロジェクトへの依存関係を宣言するだけで、プラットフォームを推移的に選択できます。

ただし、多くの場合、個々のプロジェクトが直接依存するアーティファクトを明示的に宣言することをお勧めします。ただし、それは必須ではありません。

于 2012-10-22T20:48:59.900 に答える
1

おっしゃっているのは「Corporate POM」という概念だと思います。
Sonatypeによる定義は次のとおりです。

コーポレートポム

企業 Pom は、企業の継承構造の最上位に位置する親 Pom です。これは、エンフォーサ ルールの構成、デフォルトのプラグイン バージョンなど、特定の構成を一元化するための推奨されるベスト プラクティスです。これは「組織 Pom」とも呼ばれます。「Super Pom」という用語は、企業の Pom に誤って適用されることがよくあります。

も参照してください。

親ポム

親 pom は、他の pom がセクションを介して継承する単純な pom です。親から継承した Pom は、「子」または「子 Pom」と呼ばれることがあります。</p>

于 2012-10-22T20:12:16.973 に答える