我试图出于测试目的在本地运行DynamoDB。我遵循了Amazon提供的步骤来设置和运行jar本身可以正常工作(链接到Amazon的教程Here)。但是,本教程并不会在您自己的项目中运行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导入语句均出现错误。错误是找不到资源。

我进入了他们项目的pom,并将以下内容放入我的build.gradle文件中进行了仿真。



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

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

TL; DR

有没有人设法使DynamoDB本地JAR作为Gradle项目的一部分执行,或者是否有指向好的教程的链接(不一定是我链接的教程)。

最佳答案

我们让DynamoDB Local在使用gradle。这是您需要添加到gradle.build文件中的内容:

对于gradle 4.x及以下版本

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)接下来的两个步骤是棘手的部分。首先将 native 文件复制到目录:
task copyNativeDeps(type: Copy) {
    from (configurations.testCompile) {
        include "*.dylib"
        include "*.so"
        include "*.dll"
    }
    into 'build/libs'
}

4)然后确保您将此目录(在我们的情况下为build/libs)包含在java库路径中,如下所示:
test.dependsOn copyNativeDeps
test.doFirst {
    systemProperty "java.library.path", 'build/libs'
}

现在,您应该能够运行./gradlew测试,并使您的测试命中本地DynamoDB。

09-26 19:53
查看更多