我试图出于测试目的在本地运行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。