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

Orw*_*erg 11 java gradle amazon-dynamodb dynamo-local

我正在尝试运行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')
Run Code Online (Sandbox Code Playgroud)

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

import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded;
Run Code Online (Sandbox Code Playgroud)

TL; DR

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

小智 22

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

1)添加到存储库部分:

    maven {
        url 'http://dynamodb-local.s3-website-us-west-2.amazonaws.com/release'
    }
Run Code Online (Sandbox Code Playgroud)

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

    testCompile group: 'com.amazonaws', name: 'DynamoDBLocal', version: 1.11.0
Run Code Online (Sandbox Code Playgroud)

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

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

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

test.dependsOn copyNativeDeps
test.doFirst {
    systemProperty "java.library.path", 'build/libs'
}
Run Code Online (Sandbox Code Playgroud)

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


tog*_*ise 7

对于 Gradle 5.x,以下解决方案有效

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

configurations {
        dynamodb
    }

dependencies {
    testImplementation 'com.amazonaws:DynamoDBLocal:1.11.477'
    dynamodb fileTree (dir: 'lib', include: ["*.dylib", "*.so", "*.dll"])
    dynamodb 'com.amazonaws:DynamoDBLocal:1.11.477'
}

task copyNativeDeps(type: Copy) {
    from configurations.dynamodb
    into "$project.buildDir/libs/"
}

test.dependsOn copyNativeDeps
test.doFirst {
    systemProperty "java.library.path", 'build/libs'
}
Run Code Online (Sandbox Code Playgroud)