首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为Gradle Java项目的一部分运行Dynamodb本地

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

Stack Overflow用户
提问于 2015-12-21 17:14:56
回答 6查看 10.3K关注 0票数 14

为了测试目的,我尝试在本地运行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‘)

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

代码语言:javascript
复制
import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded;

TL;DR

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

EN

回答 6

Stack Overflow用户

发布于 2016-04-21 18:16:09

我们让DynamoDB在本地和gradle一起工作。下面是您需要添加到gradle.build文件中的内容:

用于gradle 4.x及以下版本的

1)在存储库部分添加:

代码语言:javascript
复制
    maven {
        url 'http://dynamodb-local.s3-website-us-west-2.amazonaws.com/release'
    }

2)添加到依赖项部分(假设您将此部分用于测试):

代码语言:javascript
复制
    testCompile group: 'com.amazonaws', name: 'DynamoDBLocal', version: 1.11.0

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

代码语言:javascript
复制
task copyNativeDeps(type: Copy) {
    from (configurations.testCompile) {
        include "*.dylib"
        include "*.so"
        include "*.dll"
    }
    into 'build/libs'
}

4)然后确保将这个目录(在本例中为build/libs)包含在java库路径中,如下所示:

代码语言:javascript
复制
test.dependsOn copyNativeDeps
test.doFirst {
    systemProperty "java.library.path", 'build/libs'
}

现在,您应该能够运行./gradlew测试,并让您的测试访问本地DynamoDB。

票数 24
EN

Stack Overflow用户

发布于 2019-03-21 13:49:18

For Gradle 5.x下面的解决方案可以工作

代码语言:javascript
复制
 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'
}
票数 7
EN

Stack Overflow用户

发布于 2018-05-06 23:01:38

我遇到了同样的问题,首先我尝试将sqlite4java.library.path添加到Gradle脚本中,就像在其他注释中提到的那样。

这对命令行有效,但在运行IDE测试(IntelliJ IDEA)时不起作用,所以最后我提出了一个简单的init方法,即在每个集成测试的开头调用:

代码语言:javascript
复制
AwsDynamoDbLocalTestUtils.initSqLite();
AmazonDynamoDBLocal amazonDynamoDBLocal = DynamoDBEmbedded.create();

实现可以在这里找到:https://github.com/redskap/aws-dynamodb-java-example-local-testing/blob/master/src/test/java/io/redskap/java/aws/dynamodb/example/local/testing/AwsDynamoDbLocalTestUtils.java

我给GitHub举了一个完整的例子,它可能会有帮助:https://github.com/redskap/aws-dynamodb-java-example-local-testing

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34401039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档