为了测试目的,我尝试在本地运行DynamoDB。我遵循了amazon为设置jar和运行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导入语句都会出现错误。错误是找不到资源。
我进入了他们的项目的pom,并将下面的内容放入我的build.gradle文件中来模拟它。
//dynamodb本地依赖项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-testCompile('com.amazonaws:DynamoDBLocal:1.10.5.1') -适配器:1.0.2‘)
导入语句仍然失败。下面是一个失败的例子。
import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded;TL;DR
是否有人设法让DynamoDB本地JAR作为Gradle项目的一部分执行,或者有一个链接到一个好的教程(它不一定是我链接到的教程)。
发布于 2016-04-21 18:16:09
我们让DynamoDB在本地和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.03)接下来的两个步骤是棘手的部分。首先将本机文件复制到一个目录中:
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。
发布于 2019-03-21 13:49:18
For 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'
}发布于 2018-05-06 23:01:38
我遇到了同样的问题,首先我尝试将sqlite4java.library.path添加到Gradle脚本中,就像在其他注释中提到的那样。
这对命令行有效,但在运行IDE测试(IntelliJ IDEA)时不起作用,所以最后我提出了一个简单的init方法,即在每个集成测试的开头调用:
AwsDynamoDbLocalTestUtils.initSqLite();
AmazonDynamoDBLocal amazonDynamoDBLocal = DynamoDBEmbedded.create();我给GitHub举了一个完整的例子,它可能会有帮助:https://github.com/redskap/aws-dynamodb-java-example-local-testing
https://stackoverflow.com/questions/34401039
复制相似问题