当前位置: 首页 > 面试题库 >

sbt中的工作目录

文志学
2023-03-14
问题内容

我希望能够在特定目录中运行Java程序。我认为,对工作目录进行参数设置非常方便,因为它可以轻松管理配置

例如,在一个文件夹中,您可以进行测试配置,在另一个文件夹中,您可以拥有生产所需的资源。您可能会认为,可以选择操作类路径以包含/排除资源,但是只有当您对存储在类路径中的资源感兴趣并使用引用它们时,这种解决方案才有效Classloader.getResource(r)。但是,如果您具有一些外部配置,并且想使用简单的说明来访问它,该File file = new File("app.properties");怎么办?

让我们看看普通的例子。

您的应用程序使用 app.properties 文件,您在其中存储外部服务的凭据。应用程序在工作目录中查找此文件,因为您使用了上述File file = new File("app.properties");说明来访问它。在测试中,您要使用特定于测试的 app.properties
。在集成测试中,您要使用特定于其他环境的 app.properties 。最后,在构建和发布应用程序时,您想要提供其他 app.properties
文件。您希望通过键入File file = new File("app.properties");而不是(伪代码)以相同的方式始终访问所有这些资源:

if(configTest) 
    file = File("testWorkDir/app.properties");
else if(config2) 
    file = File("config2WorkDir/app.properties");
else 
    file = File("app.properties");

或者代替在classpath中使用资源

this.getClass.getClassLoader.getResource("app.properties");

当然,您是聪明的程序员,并且使用了诸如maven,gradle或sbt之类的构建工具 :)

一开始就考虑。至少问题:

有没有一种方法可以在Java中设置工作目录,如果可以,如何在构建工具中配置它(尤其是在sbt中)?

附加信息:

  • 更改“ user.dir”系统属性不起作用(我已尝试通过编程方式对其进行更改)。
  • 在sbt中,通过baseDirectory设置更改“工作目录”以进行测试更改baseDirectory,它不是我的understangind中的基本目录,并且不相等new java.io.File(".").getAbsolutePath
  • 提供环境变量(例如YOUR_APP_HOME)并从该路径引用资源是可行的,但需要在代码中记住这一点。

问题答案:

如果进行分叉,则可以控制所有内容,包括工作目录。

http://www.scala-sbt.org/0.13.5/docs/Detailed-
Topics/Forking.html

示例代码:

fork in run := true
baseDirectory in run := file("/path/to/working/directory/")


 类似资料:
  • 添加后我收到了这些消息 到我的文件,这让我认为proGuard和它的库安装得很好。但是尝试使用或检查只会给我一个错误 或 我还尝试将同样的内容放入还是没有运气。还尝试将其置于具有相同的结果。如果我在SBT提示符下尝试,它会告诉我 但我似乎根本无法运行它。我做错了什么?

  • (i)完成步骤(b)的正确方法是什么?我注意到Apache Avro项目提供了一个名为avro-tools-1.8.1.jar的jar来从模式文件生成java类。但是,我不确定如何在基于SBT的工作流中使用这个jar文件。 (ii)我注意到的另一个选择是有第三方sbt插件(如:sbt-avrohugger、scavro、sbt-avro等)。有推荐的sbt插件吗?因为这些是第三方插件,我不能确定哪

  • sbt子项目是否可以有自己的目录?或者只有根项目可以用。Scala帮助器文件为构建项目的目录?。下面是我目前的建筑结构。无法访问中定义的对象。 更新:sub-project-1/build.sbt中的以下sbt定义 由于以下错误而失败 Common在/my-project/projects/Common.scala中定义,没有问题。但是Localhost是在/my-project/sub-proj

  • 我正在使用sbt 0.13.12,这是我的项目 在构建中。sbt取决于公共。如果我按sbt project sub1 run运行就可以了。但是,当我将子项目打包为jar文件时,我运行sub1。jar文件中,错误显示sub1无法找到一类公共的。 我的目的是包装sub1。jar和sub2。在每个jar文件中编译带有通用代码的jar。 --更新-- 我尝试作为建议回答。运行时遇到这个问题: 而且,是的!

  • 当我在PC上运行时--我会得到错误消息。 ====typesafe-ivy-releases:已尝试 也许他们之间必须有一个别名,但现在没有了。 如何修复此问题? 或者可以修复它吗?

  • 我有一个sbt插件项目,使用多项目构建。我想使用这个插件作为其他sbt项目的依赖项。我已经创建了一个插件,但是当我把这个插件添加到project中时,我似乎不能正确地连接依赖项。 我在这里漏掉了什么?