- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
简而言之,我在 scala 中编写了一个工具,它从存储在本地目录中的 jar 列表生成一个 jar 列表,它解析给定的 repo 标识匹配每个本地 jar 的 groupID 并输出所有必要的信息以用于某人。我希望能够解析在运行时识别的依赖项列表(否则这是无用的),以便在为 hadoop 构建更复杂的应用程序时基本上自动化更新过程,以及测试不同构建和条件的程序兼容性。
Bottom Line: I have not found a solution which allows me to pass librarydependencies discovered within the build, to the build.
1) 在for循环中使用关键字
我在/project 目录中使用 Dependencies.scala 代码生成了 jarList,并将其添加到我的 build.sbt
jarList.foreach(x =>
libraryDependencies += x.GroupID % x.ArtifactID % x.Revision
)
2) 通过在我的/project/Dependencies.scala 文件中运行类似的内容,将找到的每个 libraryDependency 附加到 build.sbt 文件底部的一行来手动编辑 build.sbt
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.IOException;
try{
val file =new File(new
File(".").getAbsolutePath().toString.replaceAll("^(.*)\\.(.*)$","$1$2")++"build.sbt")
if(!file.exists()){
file.createNewFile()
}
val fw = new FileWriter(file,true)
val bw = new BufferedWriter(fw)
val pw = new PrintWriter(bw)
pw.println(s"""libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.7.3" """.stripMargin)
pw.close();
println("Data successfully appended at the end of file")
}catch {
case ioe: IOException => println("Exception occurred:")
ioe.printStackTrace()
}
这个选项有点工作(如果我完全停止并重新启动构建)
3) 在另一个构建之前加载/运行一个 sbt 构建,问题是 SBT 似乎总是从每个 build.sbt 文件加载信息,导致与上述相同的问题。
有没有人试过这样做?或者有人对此有任何想法/建议吗?
谢谢
最佳答案
我想你可以选择第一个选项,稍微改变一下。在您的 build.sbt
文件中声明从您的 jarList
生成的模块 ID 列表:
lazy val jarDependencies: Seq[ModuleID] = jarList.map(x => x.GroupID % x.ArtifactID % x.Revision)
然后将其添加到libraryDependencies
:
libraryDependencies ++= jarDependencies
请记住 build.sbt
包含纯 Scala 代码,可能只有很少的限制(比如有导致 Unit
的语句,例如调用 foreach
, 是不允许的)。因此,了解某些声明的类型(libraryDependencies
的类型为 SettingKey[Seq[ModuleID]]
)应该有助于增加更多魔力。
关于java - 在 SBT 构建中添加托管 libraryDependencies(任意长度)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296534/
我有兴趣弄清楚 sbt.TaskKey 或 sbt.SettingKey 的一些操作是做什么的 n + "-assembly-" + v + ".jar" } 此时你必须以某种方式知道 jarN
是否可以在 SBT 中注释掉整个文本 block ,类似于 /* Java 样式 block 注释 */ 语法?我遇到了一些构建错误,只能使用多个单行注释。 我看到的构建错误是解析表达式时出错。确保设
我在 Windows 上运行 SBT 1.1.1。 如果我将以下行放在 build.sbt 中,我的构建就可以了: credentials += Credentials(Path.userHome /
Maven 有 optional dependency概念。在 SBT 文档中搜索可选依赖项仅找到 "However, sometimes we have optional dependencies
我有一个 sbt 项目,其中包含大量子项目和外部库依赖项。 build.sbt是这样的: val extlib1 = "xy.xxx" % "lib1" % "1.0+" val extlib2 =
在编译我的 SBT 项目定义(即 project 目录中的文件)时,我收到了弃用和功能警告。 SBT 版本是 0.13.0。 我没有通过设置 scalacOptions := Seq("-featur
根据经验, build.sbt 中声明的库依赖项的顺序似乎很重要。这是真的?如果是这样,值得在 sbt library management 中简要提及。文档的部分。 最佳答案 是的,列出的顺序是用于
我希望我遗漏了一些东西,因为当程序在 sbt 中运行时,按键似乎不会回显到屏幕上。 下面是一个例子: object ConsoleTest extends App { println("Enter
[SBT 文档] 说 Put settings in a .sbt file in a project that isn't checked into version control, such as
这个问题在这里已经有了答案: How to use sbt from behind proxy? (16 个回答) 7年前关闭。 我试图在防火墙后面运行 sbt,但我无法禁用它。但不知何故,我可以获得
我刚刚偶然发现了 sbt-pack插入。开发流好像steady .这让我感到惊讶,因为我认为(引用 sbt-pack 的标题)唯一的插件是“创建可分发的 Scala 包”。是 sbt-assembly
如何配置 sbt 以使用代理? 例如,我的构建定义需要连接到 GitHub,指定 http.proxy、http.proxyPort、user 的连接参数,和密码。 我如何将这些设置传递给 sbt?
我似乎无法找到下面看到的第一次驱逐的根本原因。如下所示,运行 evicted 不会提供与其相关的详细信息。 这一切都是在添加到 project/plugins.sbt 之后发生的:libraryDep
我正在用 sbt 0.11.2 创建一个 Scala 项目和 sbt-idea,我得到了 UNRESOLVED DEPENDENCIES在 gen-idea任务。 我刚刚安装了 sbt(下载了 jar
对于使用 sbt 0.13.5 成功构建的项目(尝试升级到 0.13.6,仍然无法正常工作),我们在构建服务器上突然出现故障(typesafe 和 maven 存储库通过我们的内部 Nexus 存储库
在 unix shell 中试试这个: git clone git@github.com:jsuereth/sbt-in-action-examples.git cd sbt-in-action-ex
我想知道什么时候应该使用sbt assembly,什么时候应该使用sbt compile && sbt package? 我正在使用 Intellij IDEA 在我的本地计算机上编写一个程序,并使用
有没有人使用 sbt-aether-deploy 将 sbt-native-packager 生成的工件(在我的例子中是 tgz)发布到 nexus 仓库? (我需要这个用于带时间戳的快照,特别是 n
我正在尝试在使用 SBT 版本 0.13.5 的项目中启用自定义 AutoPlugin。当我尝试在我的 build.sbt 中启用插件时通过: val aProject = project.in(fi
我正在安装Apache Spark它使用自己的 SBT 副本来进行设置。 我在 VirtualBox 虚拟机中使用 Linux Mint。 以下是我从 Spark 目录 spark-0.9.0-inc
我是一名优秀的程序员,十分优秀!