2

職場で、JDK 1.5 固有の多くの変更をプロジェクトにコミットした人がいます。残念ながら、実稼働環境の一部はまだ Java 1.4 であるため、/trunk の jdk1.4 バージョンで構成されるデュアル ブランチの作成に頼っています。

この 1.4 ブランチの存続期間は少なくとも 1 年間である可能性が高く、その間にトランクの変更が jdk1.4 ブランチにマージされます。

私が尋ねられた質問は、この状況で Maven アーティファクト ID を処理するためのベスト プラクティスがあるかどうかです。当然のことながら、最初はベスト プラクティスにより、このような状況に陥ることは避けられたでしょう。

他のすべての識別子フィールド (groupId、バージョン) を同期させながら、他のブランチに "myapp-jdk14" などの一意のアーティファクト ID を与えることを考えました。これを行うことの明らかな欠点はありますか?

4

3 に答える 3

4

実際、これには2つの一般的に使用されるソリューションがあります。

  1. アーティファクトの名前に、のような特別なカスタムサフィックスを追加しますjdk14。たとえば、BouncyCastleまたはSLF4jはこの戦略を使用します。
  2. 分類子を使用します。これは、実際には、同じアーティファクト(正確にはあなたの場合)に関するバリエーションを区別するなどのタスク用に設計されています。

私の経験から興味深いのは、2番目のソリューションがそのようなものに対して公式に提案されているという事実にもかかわらず、最初のソリューションが実際に頻繁に使用されることです。

個人的には最初のソリューションを使用しますが、正直なところ、一方のソリューションがもう一方のソリューションに対して強いメリット(またはデメリット)は見られません。

于 2012-04-29T21:14:51.200 に答える
4

これには分類子を使用できます。

分類子: 分類子により、同じ POM から構築されたが内容が異なるアーティファクトを区別できます。これはオプションの任意の文字列であり、存在する場合はアーティファクト名のバージョン番号の直後に追加されます。

この要素の動機として、たとえば、JRE 1.5 をターゲットとするアーティファクトを提供すると同時に、JRE 1.4 をサポートするアーティファクトも提供するプロジェクトを考えてみましょう。クライアントがどちらを使用するかを選択できるように、最初のアーティファクトには分類子 jdk15 を装備し、2 番目のアーティファクトには jdk14 を装備することができます。

ソース: http://maven.apache.org/pom.html

于 2012-04-29T20:36:27.487 に答える
-1

ソリューションを使用できますが、異なるバージョン番号を使用することをお勧めします。

例えば:

1.0.X for JDK 1.4
1.1.X for JDK 1.5

それは、私の提案があなたの提案より優れているという意味ではありません。あなたのソリューションには、artifactIdに基づいてどのjdkが非常に明確に表示されるかという利点があります。

于 2012-04-29T14:39:14.003 に答える