如何在 mill ivyDeps 中定义 withSources and/or withJavadoc
How to define withSources and/or withJavadoc in mill ivyDeps
如果你想加载模块源代码 and/or javadocs 你写以下 sbt:
lazy val joda_timeV = "1.2.3"
lazy val scalatagsV = "1.2.3"
lazy val upickleV = "1.2.4"
lazy val autowireV = "1.2.5"
lazy val scalarxV = "1.2.6"
libraryDependencies ++= Seq(
"joda-time" % "joda-time" % joda_timeV withJavadoc(),
"com.lihaoyi" %%% "scalatags" % scalatagsV withSources() withJavadoc(),
"com.lihaoyi" %% "upickle" % upickleV withSources() withJavadoc(),
"com.lihaoyi" %%% "autowire" % autowireV withJavadoc(),
"com.lihaoyi" %%% "scalarx" % scalarxV withSources(),
"org.scalatestplus.play" %% "scalatestplus-play" % scalatestplus_playV % "test" withSources() withJavadoc()
),
在工厂你说
override def ivyDeps = Agg(
ivy"joda-time:joda-time:${joda_timeV}",
ivy"com.lihaoyi:::scalatags:${scalatagsV}",
ivy"com.lihaoyi::upickle:${upickleV}",
ivy"com.lihaoyi:::autowire:${autowireV}",
ivy"com.lihaoyi:::scalarx:${scalarxV}"
)
但是如何将 withJavadoc()
或 withSources()
或 withSources() withJavadoc()
添加到 mill build.sc 中?
有函数 .withConfiguration(String)
但没有 scaladoc 如何使用它。
是否可以定义一个模块仅在测试中可用(如前面代码中的 org.scalatestplus.play
),或者我应该为测试模块创建单独的 ivyDeps 吗?
关于您的第一个问题,我想您对良好的 IDE 支持感兴趣,例如完成并跳转到依赖项的来源。
Mill 已经支持 IDE 集成。它带有一个用于 IntelliJ IDEA (mill mill.scalalib.GenIdea/idea
) 的项目生成器,它会自动为您下载源代码。或者,您可以使用新的 BSP 支持(构建服务器协议),它应与 Metals 语言服务器 (https://scalameta.org/metals/) 结合使用,在各种 IDE 和编辑器中提供良好的编辑体验。不幸的是,在撰写本文时,Mills 内置的 BSP 服务器不如其 IDEA 生成器那么健壮,但还有另一种选择,即 Bloop contrib 模块。所有这些方法都应该通过依赖项和完成提供合适的代码导航。
关于你的第二个问题:
Is it possible to define that a module is available only in test (like org.scalatestplus.play
in the previous code) or should I create separate ivyDeps for testing module?
测试依赖项被声明为测试模块(技术上也是常规模块)。
// build.sc
// ...
object yourplaymodule extends PlayModule {
override def ivyDeps = Agg(
ivy"joda-time:joda-time:${joda_timeV}",
ivy"com.lihaoyi:::scalatags:${scalatagsV}",
ivy"com.lihaoyi::upickle:${upickleV}",
ivy"com.lihaoyi:::autowire:${autowireV}",
ivy"com.lihaoyi:::scalarx:${scalarxV}"
)
// ...
object test extends PlayTests {
override def ivyDeps = Agg(
ivy"org.scalatestplus.play::scalatestplus-play:${scalatestplus_playV}"
)
}
}
编辑 2021-09-16: 添加了第一个问题的答案。
如果你想加载模块源代码 and/or javadocs 你写以下 sbt:
lazy val joda_timeV = "1.2.3"
lazy val scalatagsV = "1.2.3"
lazy val upickleV = "1.2.4"
lazy val autowireV = "1.2.5"
lazy val scalarxV = "1.2.6"
libraryDependencies ++= Seq(
"joda-time" % "joda-time" % joda_timeV withJavadoc(),
"com.lihaoyi" %%% "scalatags" % scalatagsV withSources() withJavadoc(),
"com.lihaoyi" %% "upickle" % upickleV withSources() withJavadoc(),
"com.lihaoyi" %%% "autowire" % autowireV withJavadoc(),
"com.lihaoyi" %%% "scalarx" % scalarxV withSources(),
"org.scalatestplus.play" %% "scalatestplus-play" % scalatestplus_playV % "test" withSources() withJavadoc()
),
在工厂你说
override def ivyDeps = Agg(
ivy"joda-time:joda-time:${joda_timeV}",
ivy"com.lihaoyi:::scalatags:${scalatagsV}",
ivy"com.lihaoyi::upickle:${upickleV}",
ivy"com.lihaoyi:::autowire:${autowireV}",
ivy"com.lihaoyi:::scalarx:${scalarxV}"
)
但是如何将 withJavadoc()
或 withSources()
或 withSources() withJavadoc()
添加到 mill build.sc 中?
有函数 .withConfiguration(String)
但没有 scaladoc 如何使用它。
是否可以定义一个模块仅在测试中可用(如前面代码中的 org.scalatestplus.play
),或者我应该为测试模块创建单独的 ivyDeps 吗?
关于您的第一个问题,我想您对良好的 IDE 支持感兴趣,例如完成并跳转到依赖项的来源。
Mill 已经支持 IDE 集成。它带有一个用于 IntelliJ IDEA (mill mill.scalalib.GenIdea/idea
) 的项目生成器,它会自动为您下载源代码。或者,您可以使用新的 BSP 支持(构建服务器协议),它应与 Metals 语言服务器 (https://scalameta.org/metals/) 结合使用,在各种 IDE 和编辑器中提供良好的编辑体验。不幸的是,在撰写本文时,Mills 内置的 BSP 服务器不如其 IDEA 生成器那么健壮,但还有另一种选择,即 Bloop contrib 模块。所有这些方法都应该通过依赖项和完成提供合适的代码导航。
关于你的第二个问题:
Is it possible to define that a module is available only in test (like
org.scalatestplus.play
in the previous code) or should I create separate ivyDeps for testing module?
测试依赖项被声明为测试模块(技术上也是常规模块)。
// build.sc
// ...
object yourplaymodule extends PlayModule {
override def ivyDeps = Agg(
ivy"joda-time:joda-time:${joda_timeV}",
ivy"com.lihaoyi:::scalatags:${scalatagsV}",
ivy"com.lihaoyi::upickle:${upickleV}",
ivy"com.lihaoyi:::autowire:${autowireV}",
ivy"com.lihaoyi:::scalarx:${scalarxV}"
)
// ...
object test extends PlayTests {
override def ivyDeps = Agg(
ivy"org.scalatestplus.play::scalatestplus-play:${scalatestplus_playV}"
)
}
}
编辑 2021-09-16: 添加了第一个问题的答案。