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を持ちます。