2013-04-20 49 views
2

我正在尝试使用名为REST的库确保Play框架。文档 - https://code.google.com/p/rest-assured/wiki/GettingStarted - 给出的Maven以下神器 -无法加载Play框架项目中的依赖关系

<dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>rest-assured</artifactId> 
     <version>1.8.0</version> 
     <scope>test</scope> 
</dependency> 

所以我改变了我的Build.scala文件,如下所示,包括这种依赖性 -

val appDependencies = Seq(
    // Add your project dependencies here, 
    javaCore, 
    javaJdbc, 
    javaEbean, 
    "com.jayway.restassured" % "rest-assured" % "1.8.0" % "test" 
) 

然后我尝试在使用这个库Java的静态通过进口一些软件包,这是什么文件指示我做的事 -

import static com.jayway.restassured.RestAssured.*; 
import static com.jayway.restassured.matcher.RestAssuredMatchers.*; 
import static org.hamcrest.Matchers.*; 

但是这会导致一个编译错误,当我试着运行游戏应用 -

error: package com.jayway.restassured does not exist

我知道,播放/ SBT被检索的依赖,因为我可以看到在剧中-2.1.0 /库/缓存目录下的“com.jayway.restassured”目录。但是它没有显示在play-2.1.0/repository/local目录中,我不知道这是否有任何意义。

那么怎么回事,为什么我不能在我的Play应用程序中访问这个库?

+0

嗯,进口似乎工作,如果我把它们放在我的/ test目录中的Java文件。但是,如果我将它们放在我的/ app目录中的Java文件中,则不是。如果我尝试在我的/ app目录中的文件中使用它们,我会得到软件包不存在的错误。任何想法为什么发生这种情况 – sonicboom 2013-04-20 15:59:00

回答

3

如果您需要访问REST非测试代码放心,依赖应该被定义为:

"com.jayway.restassured" % "rest-assured" % "1.8.0" 

换句话说,丢弃"test"声明。当出现这种情况时,您指定该库是测试范围依赖项。目前你说REST Assured不是你的生产代码的依赖,只需要在你的测试树中编写代码(即添加到测试类路径中)。

我想后续的问题是为什么你想从你的app代码引用一个测试库?

+0

我正在尝试各种各样的东西来让IntelliJ在不引发错误的情况下使用这个依赖。您的建议有效。另外,如果我在声明中留下“测试”,并从测试代码中引用测试库,这将在Play控制台上正常工作,即“运行”,“测试”和“编译”命令毫无问题地工作。但是我在IntelliJ中得到了这个测试库的import语句错误,说'包无法解析',我无法运行我的应用程序或IntelliJ测试。 – sonicboom 2013-04-20 19:24:32

+0

看起来IDE对于Play的支持很糟糕,因为IntelliJ应该具有最好的支持,但在测试包中简单地添加依赖关系却完全打破了它。 – sonicboom 2013-04-20 19:25:04

+0

@sonicboom - 你有没有试过在你的IntelliJ项目类路径中添加rest-assured-1.8.0.jar?我之前没有使用IntelliJ,但想必这会使'红色消失'。 – avik 2013-04-20 19:41:57

相关问题