如何在 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: 添加了第一个问题的答案。