marなどの新しいタイプの管理対象アーティファクトをクラスパスに含める classpathTypes設定は、デフォルトでクラスパスに含まれる管理対象アーティファクトのタイプを制御します。marなどの新しいタイプを追加するには、
classpathTypes += "mar"
sbtプロンプトでshow classpathTypesを実行すると、含まれるデフォルトのタイプを確認できます。
CompileにスコープされたdependencyClasspathタスクは、コンパイルに使用されるクラスパスを提供します。そのタイプはSeq[Attributed[File]]であり、各エントリに追加のメタデータが添付されていることを意味します。filesメソッドは、クラスパスの生のSeq[File]のみを提供します。たとえば、別のタスクでコンパイルクラスパスのファイルを使用するには、
example := {
val cp: Seq[File] = (Compile / dependencyClasspath).value.files
...
}
注記:このクラスパスには、状況によってはコンパイルに必要なクラスディレクトリが含まれていません。
fullClasspathタスクは、依存関係とプロジェクトの成果物の両方を含むクラスパスを提供します。ランタイムクラスパスでは、プロジェクトのメインリソースとコンパイル済みクラス、およびすべてのランタイム依存関係が含まれます。
クラスパスのタイプはSeq[Attributed[File]]であり、各エントリに追加のメタデータが添付されていることを意味します。filesメソッドは、クラスパスの生のSeq[File]のみを提供します。たとえば、別のタスクでランタイムクラスパスのファイルを使用するには、
example := {
val cp: Seq[File] = (fullClasspath in Runtime).value.files
...
}
fullClasspathタスクは、依存関係とプロジェクトの成果物の両方を含むクラスパスを提供します。テストクラスパスには、プロジェクトのメインとテストのリソースとコンパイル済みクラス、およびテストのすべての依存関係が含まれます。
クラスパスのタイプはSeq[Attributed[File]]であり、各エントリに追加のメタデータが添付されていることを意味します。filesメソッドは、クラスパスの生のSeq[File]のみを提供します。たとえば、別のタスクでテストクラスパスのファイルを使用するには、
example := {
val cp: Seq[File] = (Test / fullClasspath).value.files
...
}
デフォルトでは、fullClasspathには、プロジェクトのクラスファイルとリソースを含むディレクトリが含まれています。これは、compile、test、runなどのタスクがクラスパスにこれらのクラスディレクトリを持つことを意味します。代わりにパッケージ化されたアーティファクト(jarなど)を使用するには、exportJarsを設定します。
exportJars := true
これにより、クラスディレクトリの代わりにpackageBinの結果がクラスパスで使用されます。
注記:具体的には、fullClasspathはdependencyClasspathとexportedProductsの連結です。exportJarsがtrueの場合、exportedProductsはpackageBinの出力です。exportJarsがfalseの場合、exportedProductsは単にproductsであり、デフォルトではクラスファイルとリソースを含むディレクトリです。
updateタスクの結果はUpdateReport型であり、依存関係解決の結果が含まれています。これは、特定の設定で特定のタイプのアーティファクトのファイルを取り出すために使用できます。たとえば、Compile設定の依存関係のjarとzipを取得するには、
example := {
val artifactTypes = Set("jar", "zip")
val files =
Classpaths.managedJars(Compile, artifactTypes, update.value)
...
}
クラスパスはSeq[Attributed[File]]型であり、各エントリに追加のメタデータが添付されていることを意味します。filesメソッドは、クラスパスの生のSeq[File]のみを提供します。たとえば、
val cp: Seq[Attributed[File]] = ...
val files: Seq[File] = cp.files
クラスパスはSeq[Attributed[File]]型であり、各エントリに追加のメタデータが添付されていることを意味します。このメタデータはAttributeMapの形式です。マップのエントリの有用なキーは、artifact.key、moduleID.key、およびanalysisです。たとえば、
val classpath: Seq[Attributed[File]] = ???
for(entry <- classpath) yield {
val art: Option[Artifact] = entry.get(artifact.key)
val mod: Option[ModuleID] = entry.get(moduleID.key)
val an: Option[inc.Analysis] = entry.get(analysis)
...
}
注記:エントリには、一部またはすべてのメタデータが含まれていない場合があります。内部プロジェクトなどのソース依存関係からのエントリのみが、インクリメンタルコンパイルAnalysisを持ちます。管理対象依存関係のエントリのみがArtifactとModuleIDを持ちます。