12

用語の下で何を意味しclassifiersますか? Jarsから来ていますか?sbt-assemblyプラグインの例:

artifact in (Compile, assembly) ~= { art =>
  art.copy(`classifier` = Some("assembly"))
}
4

2 に答える 2

19

classifiergroupIdartifactIdversionおよびの後に、プロジェクト座標の 5 番目の要素として Maven によって定義されpackagingます。

より具体的には(Mavenのドキュメント、重点鉱山から):

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

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

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

たとえば、Maven central には normal (classifier なし) だけscala-library-2.10.2.jarでなく、

  • scala-library-2.10.2-javadoc.jar慣例により、ドキュメントが含まれています (この場合、javadoc ではなく scaladoc が含まれていても)。
  • scala-library-2.10.2-sources.jarソースが含まれています。

これら 2 つの追加成果物は、分類子とともに公開されました。

SBT では、分類子を依存関係に追加することもできます。ドキュメントから:

libraryDependencies += "org.testng" % "testng" % "5.7" classifier "jdk15"

あなたの場合、sbt-assembly プラグインがすべての分類子 (アセンブリ タスク内のみ) をオーバーライドして、それらを に設定しているようassemblyです。

于 2013-09-02T19:08:41.283 に答える