当前位置:  开发笔记 > 编程语言 > 正文

作为Gradle Java项目的一部分,将Dynamodb本地运行

如何解决《作为GradleJava项目的一部分,将Dynamodb本地运行》经验,为你挑选了1个好方法。

我正在尝试运行dynamodb local进行测试.我按照亚马逊提供的步骤设置它并运行jar本身工作正常(链接到亚马逊的教程这里).但是,本教程不会在您自己的项目中运行jar.我不希望所有其他开发人员每次测试代码时都必须抓住jar并在本地运行它.

这就是我的问题所在.我在网上找到了如何配置gradle项目以运行dynamodb本地服务器作为我的测试的一部分.我找到了以下maven示例https://github.com/awslabs/aws-dynamodb-examples/blob/master/src/test/java/com/amazonaws/services/dynamodbv2/DynamoDBLocalFixture.java#L32我正在尝试转换它是一个gradle,但是com.amazonaws.services.dynamodbv2.local他们正在使用的所有import语句都会出错.错误是无法找到资源.

我进入他们项目的pom并将以下内容放入我的gradle.build文件中以模拟它.

//dynamodb local dependencies
testCompile('com.amazonaws:aws-java-sdk-dynamodb:1.10.42')
testCompile('com.amazonaws:aws-java-sdk-cloudwatch:1.10.42')
testCompile('com.amazonaws:aws-java-sdk:1.3.0')
testCompile('com.amazonaws:amazon-kinesis-client:1.6.1')
testCompile('com.amazonaws:amazon-kinesis-connectors:1.1.1')
testCompile('com.amazonaws:dynamodb-streams-kinesis-adapter:1.0.2')
testCompile('com.amazonaws:DynamoDBLocal:1.10.5.1')

导入语句仍然失败.这是一个失败的例子.

import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded;

TL; DR

有没有人设法让dynamodb本地jar作为gradle项目的一部分执行,或者有一个很好的教程的链接(它不一定是我链接到的教程).



1> 小智..:

我们有DynamoDB本地使用gradle.以下是您需要添加到gradle.build文件的内容:

1)添加到存储库部分:

    maven {
        url 'http://dynamodb-local.s3-website-us-west-2.amazonaws.com/release'
    }

2)添加到依赖项部分(假设您正在使用它进行测试):

    testCompile group: 'com.amazonaws', name: 'DynamoDBLocal', version: 1.11.0

3)接下来的两个步骤是棘手的部分.首先将本机文件复制到目录:

task copyNativeDeps(type: Copy) {
    from (configurations.testCompile) {
        include "*.dylib"
        include "*.so"
        include "*.dll"
    }
    into 'build/libs'
}

4)然后确保在java库路径中包含此目录(在我们的示例中为build/libs),如下所示:

test.dependsOn copyNativeDeps
test.doFirst {
    systemProperty "java.library.path", 'build/libs'
}

现在,您应该能够运行./gradlew test并让您的测试点击您当地的DynamoDB.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有