我从软件测试开始-使用Cucumber,Java和gradle。 我尝试通过“ The Cucumber for Java Book”一书来学习这一点
但是我尝试用gradle代替maven ...但是现在我遇到了一些问题... 我坚持在第149页上。我必须给这样的依赖:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
</dependency>
我尝试将其“翻译”成gradle
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile 'io.cucumber:cucumber-java:2.4.0'
testCompile 'io.cucumber:cucumber-junit:2.4.0'
testCompile group: 'info.cukes', name: 'cucumber-picocontainer', version: '1.2.5'
compile group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.4.12.v20180830'
}
这是对的吗? 编译组:“ org.eclipse.jetty”,名称:“ jetty-webapp”,版本:“ 9.4.12.v20180830”
之后,我必须运行:
mvn exec:java -Dexec.mainClass="nicebank.AtmServer"
但是我该如何用gradle做到这一点?
我希望有人可以帮助我:)
答案 0 :(得分:1)
您的依存关系看起来不错。只需注意一点:考虑使用implementation
而不是compile
,因为它可以提高性能。了解有关compile
弃用here的信息。
您还可以将属性放入gradle.properties
文件中,并在构建脚本中引用它们:
gradle.properties :
jettyVersion=9.4.12.v20180830
build.gradle :
implementation group: 'org.eclipse.jetty', name: 'jetty-webapp', version: jettyVersion
码头团队还发布了BOMs:— org.eclipse.jetty:jetty-bom:9.4.12.v20180830
。如果您使用同一版本的多个项目,则可以import the BOM并完全跳过该版本:
dependencies {
implementation 'org.eclipse.jetty:jetty-bom:9.4.12.v20180830'
implementation 'org.eclipse.jetty:jetty-webapp'
implementation 'org.eclipse.jetty:jetty-runner'
}
对于“ exec”任务:如果您的项目中只有一个主类,例如nicebank.AtmServer
,请考虑使用Gradle的Application Plugin:
plugins {
id 'application'
}
mainClassName = 'nicebank.AtmServer'
这样,您无需手动创建“ exec”任务,您将从插件中获得一个(run
)。作为奖励,您将获得两个“分发”任务,这些任务将使用您的应用创建随时可分发的存档:distZip
和distTar
。
答案 1 :(得分:0)
正如我在评论中所说,对jetty-webapp的依赖关系似乎不错,但您应该使用implementation
而不是compile
(compile
已过时,请参阅Java dependency configurations ):
implementation group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.4.12.v20180830'
或
implementation "org.eclipse.jetty:jetty-webapp:9.4.12.v20180830"
对于Gradle中的“ maven exec:java”,您可以使用Gradle JavaExec task type:尝试在构建中定义任务,如下所示:
task runApp(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'nicebank.AtmServer'
}
(未经测试,您必须适应它),然后使用
运行gradle runApp
您也可以使用 Gretty 插件来运行您的Web应用程序(在这种情况下,无需定义自己的JavaExec任务),如here和here所述:>
plugins{
// your existing plugins
id "org.gretty" version "2.2.0"
}
然后可以使用以下命令运行该应用程序:
gradle appRun