2014-02-14 36 views
0

我正在开发一个带有Play 2的网站,并且在依赖方面遇到了一些麻烦。我在文档中搜索,但没有发现任何相关内容。在SBT中独立的Play 2项目之间共享相关性?

这里是我的项目的结构:

  • api - 包含我的模型,服务控制器一个播放2应用等
  • commons - 一个播放2应用程序,它提供了一些实用工具类,贝宝集成等

apiapi/build.sbt增加了一个依赖于commons。在commons我添加以下依赖贝宝:

"com.paypal.sdk" % "rest-api-sdk" % "0.7.1" 

我认为我不得不只在commons添加这种依赖性。但是当我在api中使用与PayPal交互的类时,我有ClassNotFound错误。

SBT不应该检索commons的依赖关系commonsapi

如果我在api/build.sbt中向PayPal添加依赖项,一切正常,但我在这两个地方都有这种依赖关系。

编辑亚切克质疑

  • 播放2版本:2.2.0
  • apicommons是两个独立的SBT项目(无根项目)apicommons之间
  • 依赖于api/build.sbt
libraryDependencies ++= Seq(
    // Other dependencies ... 
    "com.mycompany" %% "commons" % "1.0.0" 
) 
+0

你使用了什么样的Play版本? 'api'和'commons'两个独立的SBT项目没有父母/根SBT项目吗?你是如何定义'commons'和'api'之间的依赖关系的?你可以运行'树'或类似的东西来显示项目结构?我最感兴趣的是带有'build.sbt'和'project/*。scala'文件的目录。 –

+0

我编辑了这个问题,这里有一个'play dependencies'的pastebin:http://pastebin.com/kxRS1tdK – c4k

回答

0

鉴于

  • apicommons是两个独立的SBT项目(无根项目)”
  • 经由libraryDependencies没有 “在api/build.sbtapicommons之间相关性”常春藤范围。

然后

  • api项目股份commons项目compile依赖于 +及物动词。

请注意,由于您api项目上的贝宝班“使用贝宝进行交互类的api你已经直接依赖,因此你必须添加PayPal的依赖到项目的libraryDependencies。他们是独立的项目,拥有自己的构建配置(和依赖关系),无论对方的依赖关系是否应该正确声明。

+0

实际上,我没有直接在'api'中使用'PayPal'类。我只在'commons'中调用方法。但是这些方法正在调用贝宝类。没有办法通过'commons'来传递'api'共享依赖关系? – c4k