2011-03-13 150 views
2

我在同一时间使用Maven和SBT管理我的项目。造成这种情况的原因是:
Maven SBT依赖项构件?

  1. 的IntelliJ的IDEA无法导入SBT 项目(IDEA-SBT插件不 工作非常好)
  2. 我不知道怎样才能来源和 的javadoc。 SBT。(我想看看关于这个的任何答案)

问题是我不知道如何让Maven下载SBT依赖。我搜索maven仓库并找不到关于sbt的任何内容。我想用Maven或SBT来管理我项目中的所有罐子。

回答

5
  • 如果您将pom.xml放到项目的根目录中,它将被SBT识别。当您在项目定义中没有指定托管依赖项时,SBT依赖于Maven依赖项。

    正如在SBT doumentation说,

SBT执行这种依赖性在执行更新操作时处理 。默认情况下,sbt在每次编译之前都不会更新您的 依赖项,但只有在您执行 更新时才会更新。 SBT支持的 指定这些依赖三个方面:

* Declarations in your project definition 
* Maven POM files 
* Ivy configuration and settings files 
  • Maven的一无所知SBT截至目前(至少我没有听说过任何插件到目前为止),所以,你最好可以在Maven和SBT中管理您的项目,是通过SBT生成POM。有关更多详细信息,请参阅SBT to Maven Converter
+0

是的,但是当导入到IDEA时,它声称找不到SBT.jar,因为它确实存在于maven中,我问的是如何将sbt依赖添加到pom.xml中。 – Sawyer 2011-03-13 07:48:49

+0

为什么你需要你的项目依赖于sbt.jar(构建时间,元级别依赖)?只有在项目定义时才需要(在大多数情况下),这对于SBT是有用的(并且在标准设置中,可见)。 – 2011-03-13 07:57:11

+0

由于您使用scala源定义sbt项目定义,IDE将尝试解析并编译该文件。如果您的类路径中没有有效的sbt库,它将报告编译错误,我不想指向硬盘驱动器中的那个jar。 – Sawyer 2011-03-13 08:08:45

5

idea-sbt插件对IDEA 10非常有用 - 它真正打算做的是在IDE中打开一个SBT外壳,并且它足够好。

如果您有兴趣将Maven从构建中移出,那么您应该查看一个插件是sbt-idea插件(https://github.com/mpeltonen/sbt-idea)。这是一个很棒的插件,可以从SBT项目中生成IDEA文件。它不容易使用。在SBT提示符处,运行以下命令:

*sbtIdeaRepo at http://mpeltonen.github.com/maven/ 
*idea is com.github.mpeltonen sbt-idea-processor 0.3.0 
update 
idea 

注意星号 - 它们应该包括在内。

此时,您可以在IDEA中打开您的项目。它不会抱怨SBT依赖。无论何时,只要将新的依赖关系添加到项目文件中,只需再次运行'idea'命令以告知IDEA。我在idea-sbt提供的SBT窗口中这样做。

至于获得源和文档具有依赖性,你可以做这样的事情(从SBT docs):

val sc = "org.scalacheck" % "scalacheck" % "1.5" withSources() 

有一个相应的withJavadoc()方法。希望有所帮助。

+3

非常感谢withSources()提示。 – Sawyer 2011-03-14 07:04:52