我创建了一个具有以下结构的新项目(混淆名称:):
Parent
|-- Child A
|-- Child BParent/build.sbt中的灯光构建定义如下:
name := "Parent"
scalaVersion := "2.9.1"
version := "1.0.0-SNAPSHOT"Parent/project/Build.scala中的完整定义如下:
import sbt._
import Keys._
object MyBuild extends Build {
lazy val root = Project(id = "Parent",
base = file(".")) aggregate(projectA, projectB)
lazy val projectA = Project(id = "Project A",
base = file("projectA"))
lazy val projectB = Project(id = "Project B",
base = file("projectB"))
}在~/.sbt/plugins/build.sbt中,我有:
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "0.11.0")如果我在文件夹Parent中运行sbt gen-idea,所有依赖项都会正确下载,并且会为Parent正确创建项目定义。但是,sbt还会尝试在子项目projectA和projectB中运行该命令。此操作将失败,并显示以下错误:
[warn] module not found: com.github.mpeltonen#sbt-idea;0.11.0
[warn] ==== local: tried
[warn] /home/me/.ivy2/local/com.github.mpeltonen/sbt-idea/scala_2.9.1/sbt_0.11.1/0.11.0/ivys/ivy.xml
[warn] ==== Maven2 Local: tried
[warn] file:/home/me/.m2/repository/com/github/mpeltonen/sbt-idea_2.9.1_0.11.1/0.11.0/sbt-idea-0.11.0.pom
[warn] ==== typesafe-ivy-releases: tried
[warn] http://repo.typesafe.com/typesafe/ivy-releases/com.github.mpeltonen/sbt-idea/0.11.0/ivys/ivy.xml
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/com/github/mpeltonen/sbt-idea_2.9.1_0.11.1/0.11.0/sbt-idea-0.11.0.pom
[warn] ==== Scala-Tools Maven2 Repository: tried
[warn] http://scala-tools.org/repo-releases/com/github/mpeltonen/sbt-idea_2.9.1_0.11.1/0.11.0/sbt-idea-0.11.0.pom
[warn] ==== Scala-Tools Maven2 Snapshots Repository: tried
[warn] http://scala-tools.org/repo-snapshots/com/github/mpeltonen/sbt-idea_2.9.1_0.11.1/0.11.0/sbt-idea-0.11.0.pom
[info] Resolving commons-io#commons-io;2.0.1 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: com.github.mpeltonen#sbt-idea;0.11.0: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes.
[warn] com.github.mpeltonen:sbt-idea:0.11.0 (sbtVersion=0.11.1, scalaVersion=2.9.1)
[warn]
[error] {file:/opt/workspace/Parent/}ProjectA/*:update-sbt-classifiers: sbt.ResolveException: unresolved dependency: com.github.mpeltonen#sbt-idea;0.11.0: not found
[info] Created /opt/workspace/Parent/.idea_modules/project.iml如果我将~/.sbt/plugins/build.sbt移到Parent/project/build.sbt,也会得到同样的结果。
如何阻止Parent的子级执行gen-idea
发布于 2011-11-18 02:06:42
我不会为子项目禁用gen-idea,因为插件会为每个子项目创建单独的模块。
I guessTechnically你可以通过在每个子项目的build.sbt中添加解析器来解决这个问题
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"然而,我不确定为什么你需要它,因为它应该在没有它的情况下工作。当插件版本与sbt版本不同时,我也遇到了类似的问题(您可以使用about命令检查sbt版本)
发布于 2011-11-17 18:23:07
aggregate命令的文档显示,它还用于执行子项目的所有命令。因此,在Parent上执行compile也会在Project A和Project B上执行compile。
来自sbt文档
聚合意味着在聚合项目上运行任务也会在聚合项目上运行它。使用示例中的两个子项目启动sbt,并尝试编译。您应该看到所有三个项目都已编译。
进一步阅读它表明您可以从聚合中排除某些任务,因此您希望这样做
aggregate in gen-idea := false这回答了您的问题,但我认为它不会使您的设置工作。我目前也在为多项目sbt而苦苦挣扎。
https://stackoverflow.com/questions/8165272
复制相似问题