Tag: sbt

使用Scala IDE的SBT

从SBT到Scala-IDE的path在很多地方都有很好的描述: 从一个SBT项目开始 添加SBT插件定义:addSbtPlugin(“com.typesafe.sbteclipse”%“sbteclipse-plugin”%“2.1.0-RC1”) 从SBT内运行'eclipse'命令 用安装的Scala-IDE插件打开Eclipse 导入项目 什么是相反的呢? 如果我在Scala-IDE中启动一个新的项目,我可以只添加一个build.sbt文件,并以某种方式告诉Eclipse在运行应用程序时使用它? 道歉,如果这似乎是显而易见的,但我最近从ItelliJ创意转移到Scala-IDE,我不确定设置Scala-IDE使用SBT和我的sbtconfiguration文件。

如何在命令行上设置runMain的系统属性?

如何从Windows上的命令行执行runMain时设置系统属性? 我想能够运行以下命令: sbt -Dconfig.resource=../application.conf "runMain akka.Main com.my.main.Actor" 无论fork是否为true,是否将它放在SBT_OPTS ,或者如何将其传入,我都无法完成此操作。 我不熟悉在build中定义的默认值时,在命令行设置设置值吗? 并设置系统属性与“sbt运行”,但既不回答我的问题。 其他问题似乎表明,您甚至无法在SBT中轻松查看Java调用参数。 任何帮助表示赞赏。

在IntelliJ IDEA中为Scala / sbt项目推荐.gitignore?

我在IntelliJ IDEA 13中创build了一个新的Scala / sbt项目。由于其他团队成员将在这个项目上工作(大概与其他IDE),我应该把什么放在.gitignore ? 似乎有一些项目依赖关系是在.idea文件夹中定义的,所以我不确定是否可以将整个目录放在.gitignore 。

使用SBT构build纯Java项目

从历史上看,我使用Ant + Ivy或Maven来构build我的Java项目。 我现在正在看非基于xml的解决scheme。 Gradle可以编译,jar和发布我的项目很less的问题。 我可以和SBT一样吗? 如果是这样,你可以提供一个简单的例子,用sbt构build一个java只有项目。

如何在库中支持多个Scala版本

我有一个相当普通的Scala项目,目前正在使用Maven构build。 我想要支持Scala 2.9.x和即将推出的2.10,它不是二进制或源代码兼容的。 如果有必要的话,我愿意考虑转换到SBT,但是我遇到了一些挑战。 我对这个项目的要求是: 单一来源树(不分支)。 我相信试图支持每个Scala版本的多个并发“主”分支将是错过分支之间错误修正的最快方法。 版本特定的源目录。 由于Scala版本不是源兼容的,我需要能够为版本特定的源指定辅助源目录。 特定于版本的源码jar。 最终用户应该能够下载正确的源代码jar,以及正确的版本特定的源代码,用于他们的Scala for IDE版本集成。 综合部署。 我目前使用Maven发行版插件将新版本部署到Sonatype OSS存储库,并希望为发行版提供类似的简单工作stream程。 最终用户Maven支持。 我的最终用户通常是Maven用户,所以准确反映依赖关系的function性POM至关重要。 阴影jar支持。 我需要能够生成包含我的依赖项的子集的JAR, 并从已发布的POM中去除阴影依赖项。 我已经尝试过的事情: Mavenconfiguration文件。 我创build了一组Mavenconfiguration文件来控制使用哪个版本的Scala来构build,使用Maven build-helper插件来select版本特定的源代码树。 在发布之前,这一切都运行良好。 使用分类器来限定版本并不能正常工作,因为源代码的jar也需要自定义分类器('source-2.9.2'等),大多数IDE工具都不知道如何定位它们。 我尝试使用Maven属性将SBT风格的_ $ {scala.version}后缀添加到工件名称,但Maven不喜欢工件名称中的属性。 SBT。 一旦你可以使用它,就可以很好地工作(尽pipe有大量的文档,这不是一件小事)。 不利的一面是,似乎没有与Maven shade插件相当的function。 我看过: Proguard的。 该插件没有针对SBT 0.12.x进行更新,并且不会从源代码生成,因为它取决于另一个更改了groupIds的SBT插件,并且旧名称下没有0.12.x版本。 我还没有能够解决如何指示SBT忽略/replace插件的依赖关系。 OneJar。 这使用自定义类加载来运行embedded式jar的主要类,这不是所需的结果; 我希望我的项目的类文件在我的阴影依赖关系的jar文件中(可能是重命名的)类文件。 SBT大会插件。 这可以在一定程度上工作,但POM文件似乎包括我试图遮蔽的依赖关系,这对我的最终用户没有帮助。 我接受,可能没有一个解决scheme可以满足我对Scala的需求,或者我可能需要编写自己的Maven或Scala插件来完成目标。 但是,如果我可以,我想find一个现有的解决scheme。 更新 我接受@ Jon-Ander的出色答案 ,但对我来说,还是有一个杰出的作品,那就是一个统一的发布stream程。 我的build.sbt的当前状态在GitHub上 。 (我将在后面为后代重现它)。 sbt-release插件不支持多版本构build(也就是说, + […]

jboss拦截器api 1.1在添加为sbt依赖时未find

我试图通过sbt设置jboss-interceptor-api-1.1作为依赖项,但无法find。 我已经search了Maven仓库,这个版本在那里,任何人都可以帮助我吗? 实际上,我正在尝试使用sbt-assembly。 删除插件依赖项,并添加依赖到libraryDependencies仍然显示错误。 堆栈跟踪: [info] Resolving org.jboss.interceptor#jboss-interceptor-api;1.1 … [info] Resolving org.jboss.interceptor#jboss-interceptor-api;1.1 … [warn] problem while downloading module descriptor: https://repo1.maven.org/maven2/org/jboss/interceptor/jboss-interceptor-api/1.1/jboss-interceptor-api-1.1.pom: invalid sha1: expected=453b712ff6cda3a3f10f46a9ab9b9a42fc9bc021 computed=56da14e5a3e7e5656fe2ed1942d9fc0c1f3b054b (122ms) [warn] module not found: org.jboss.interceptor#jboss-interceptor-api;1.1 [warn] ==== typesafe-ivy-releases: tried [warn] https://repo.typesafe.com/typesafe/ivy-releases/org.jboss.interceptor/jboss-interceptor-api/1.1/ivys/ivy.xml [warn] ==== sbt-plugin-releases: tried [warn] https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.jboss.interceptor/jboss-interceptor-api/1.1/ivys/ivy.xml [warn] ==== local: tried [warn] /Users/vicaba/.ivy2/local/org.jboss.interceptor/jboss-interceptor-api/1.1/ivys/ivy.xml [warn] ==== public: tried [warn] https://repo1.maven.org/maven2/org/jboss/interceptor/jboss-interceptor-api/1.1/jboss-interceptor-api-1.1.pom [warn] […]

从Maven迁移到SBT

如您所知,SBT与Maven以某种方式兼容 – SBT可以识别简单的Maven POM,并可以使用它们中指定的依赖项和存储库。 然而, SBT维基说,如果在SBT项目定义中指定了内联依赖关系,POM将被忽略(所以在这种情况下使用两者是不可能的): 当内联依赖声明存在时,Maven和Ivyconfiguration(pom.xml和ivy.xml)将被忽略。 有谁知道,如果从Maven POM到SBT项目定义的任何一种转换器存在(将POM的XML转换为项目定义Scala代码)? 我正在考虑编写这样的脚本(这将有助于将我的旧Scala / Maven项目迁移到SBT),但首先要知道,如果这个function已经存在。

想法,sbt,无法重新警告

我把我的神器推到oss nexus repo上,把它作为依赖添加到另一个项目中。 想法让我警告: [warn] Unable to reparse com.github.kondaurovdev#jsonapi_2.11;0.1-SNAPSHOT from sonatype-snapshots, using Fri May 13 17:12:52 MSK 2016 [warn] Choosing sonatype-snapshots for com.github.kondaurovdev#jsonapi_2.11;0.1-SNAPSHOT 也许我以某种错误的方式推动了神器? 但是我早些时候做了,一切都很好。 如何摆脱这些警告? 或者只是忽略它们?

IntelliJ IDEA 9 + Maven +版本控制的最佳实践

该项目正在使用Maven,所以POM文件是项目信息的主要来源。 在项目文件中有一些有用的设置,这将是很好的保持。 OTOH IDEA似乎在项目文件结构中创build了太多冗余的变化,污染了SVN的历史,有时会产生冲突。 我应该保持.idea目录和* .iml文件在版本控制下? 在全? 部分? 更新:所以我发现为我和我的团队工作的最佳做​​法是迄今为止: 检入所有的IDEA文件,* .iml和.idea目录。 它们包含有价值的信息,每次更新时都会浪费时间来重新创build。 为每个开发者创build私有分支 cd进入.idea目录 svn切换到它的私人分支机构 不要在常规提交中检查IDEA文件 – 它们会污染历史。 检查他们在特殊的承诺。 通过这种方式,您可以将版本控制中的.idea目录的内容保留在版本控制中,但不会妨碍正常提交。 任何开发人员都可以访问任何其他人的IDEA目录。 更新2:由于这个问题已经写好,我已经改变了我的做法,就是没有将任何IntelliJ文件检入到版本控制中,正如许多响应者所build议的那样。 这是我目前Maven和Gradle的做法。 这些工具已经发展到可以始终从原始的.POM或.gradle文件复制关键信息的地步。 当文件改变时,IDE可靠地跟踪改变,所以你不会丢失你的IDE文件,因此不需要检查它们。 更新3: 7年之后问这个问题似乎仍然有关。 相同的最佳实践也适用于Gradle(也可能是SBT):不要检查IDE文件,根据需要从基本的POM,.gradle或SBT文件中重新创build它们。

如何发布jar到本地存储库?

我有一个库编译到一个库中不可用的jar(不是一个sbt项目,没有源代码,只是jar文件)。 有没有办法在本地发布的jar,所以我可以添加依赖使用libraryDependencies += "org.xxx" % "xxx" % "1.0"表示法? (我已经知道如何通过将文件复制到lib文件夹来将文件添加到项目中。)