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。