16

私たちは現在、ant で構築された非常に (非常に) 大規模なプロジェクトを maven に移植しようとしています (同時に svn にも移行しています)。Maven パラダイムに最も適合するようにプロジェクト構造を改造する際に、あらゆる可能性が検討されています。

より具体的に言うと、分類子に出くわしたので、「分類子のアンチパターン」を控えながら、それらを有利に使用する方法を知りたいと思います。

ありがとう

から: http://maven.apache.org/pom.html

分類子: 座標上に 5 番目の要素が見つかる場合があり、それが分類子です。分類子については後で説明しますが、ここでは、これらの種類のプロジェクトが groupId:artifactId:packaging:classifier:version として表示されることを知っていれば十分です。

分類子により、同じ POM から構築されたが内容が異なるアーティファクトを区別できます。これはオプションの任意の文字列であり、存在する場合はアーティファクト名のバージョン番号の直後に追加されます。この要素の動機として、たとえば、JRE 1.5 をターゲットとするアーティファクトを提供すると同時に、JRE 1.4 をサポートするアーティファクトも提供するプロジェクトを考えてみましょう。クライアントがどちらを使用するかを選択できるように、最初のアーティファクトには分類子 jdk15 を装備し、2 番目のアーティファクトには jdk14 を装備することができます。

分類子のもう 1 つの一般的な使用例は、プロジェクトのメイン アーティファクトにセカンダリ アーティファクトを添付する必要がある場合です。Maven 中央リポジトリを参照すると、分類子のソースと javadoc を使用して、パッケージ化されたクラス ファイルとともにプロジェクトのソース コードと API ドキュメントがデプロイされていることがわかります。

4

5 に答える 5

9

正しい質問は、How to use or abuse attached artifacts maven?基本的にそれが分類子が導入された理由です-添付されたアーティファクトを公開できるようにするためです。

まあ、Maven プロジェクトは、たとえば maven-javadoc-plugin または maven-source-plugin を使用して、添付されたアーティファクトを暗黙のうちに使用することがよくあります。maven-javadoc-plugin は、分類子を使用して生成されたドキュメントを含む添付アーティファクトを公開しjavadoc、maven-source-plugin はsources分類子を使用してソースを公開します。

では、添付されたアーティファクトの明示的な使用についてはどうでしょうか? 添付のアーティファクトを使用して、ハーネス シェル スクリプト (start.sh および Co) を公開します。分類子などを使用して、付属のアーティファクトで SQL スクリプトを公開することもお勧めしますsql

分類子に任意の成果物をどのように添付できますか? - これは build-helper-maven-plugin で実行できます。

于 2013-12-31T15:10:35.550 に答える
5

...どうすればそれらを有利に利用できるか知りたい...

それらを使用しないでください。これらはオプション任意です。

プロジェクトを Maven に移植している途中の場合は、物事をシンプルに保ち、(最初は) 必要なことだけを実行して、すべてが思いどおりに機能するようにします。次に、物事が思いどおりに機能したら、maven のより高度な機能を調べて、クールなことを行うことができます。

この回答は、「この機能はきれいに聞こえますが、必要がないのにどのように使用できますか?」のような質問に基づいています。一種の質問。この機能が必要な場合は、質問を更新して、分類子機能をどのように利用することを考えていたかについての情報を追加してください。

于 2011-11-07T19:09:08.350 に答える
4

Jesse Web の回答とは対照的に、分類子について学び、分類子を活用して、maven への移植に加えてコードをリファクタリングする必要がないようにすることをお勧めします。1年か2年前に同じプロセスを経ました。以前は、すべてを 1 つのコード ベースにまとめ、ant と一緒に構築していました。Maven に移行する際に、さまざまなコンポーネントを独自の Maven プロジェクトに分割する必要があることもわかりました。これらのプロジェクトの一部は実際にはライブラリでしたが、いくつかの Web リソース (jsp、js、画像など) が含まれていました。最終結果は、分類子「web-resources」とタイプ「war」(オーバーレイとして使用する)を使用して、Web リソースを使用して添付アーティファクト(@Male で言及)を作成することでした。これは、古い結合されたプロジェクトを移植するための最良のソリューションであり、maven をよりよく理解した後でもそうです。

一般に、アーティファクトを添付することは避けたいと考えています。これは通常、そのアーティファクトをビルドするために別のプロジェクトを作成する必要があることを示しています。別の分類子を使用してアーティファクトを添付したくなるときはいつでも、これを行うことを検討することをお勧めします。

于 2014-11-07T15:15:39.090 に答える
2

分類子を使用して、メインのアーティファクトに対するサポート アーティファクトを定義します。

たとえば、com.bar|foo-1.0.war があり、com.bar|foo-1.0-properties.zip という名前の関連する構成があります。

于 2012-11-13T13:00:13.257 に答える
1

リポジトリにデプロイしたい同じアーティファクトの異なるバージョンがある場合、分類子を使用できます。

ユースケースは次のとおりです。

それらを pom のプロパティと組み合わせて使用​​します。pom には、コマンド ラインからオーバーライドできるデフォルト値があります。オプションなしで実行すると、デフォルトのプロパティ値が使用されます。プロパティ値が異なるアーティファクトのバージョンをビルドすると、それを分類子を使用してリポジトリにデプロイできます。

たとえば、次のコマンド:

mvn -DmyProperty=specialValue package install:install-file -Dfile=target/my-ear.ear -DpomFile=my-ear/pom.xml -Dclassifier=specialVersion

特別なプロパティを持つ耳アーティファクトのバージョンを構築し、分類子「specialVersion」を使用してアーティファクトをリポジトリにデプロイします。

したがって、私のレポには my-ear-1.0.0.ear と my-ear-1.0.0-specialVersion.ear を含めることができます。

于 2012-01-26T22:13:20.670 に答える