2015-12-21 25 views
3

我試圖運行dynamodb本地用於測試目的。我遵循了亞馬遜提供的設置和運行該jar本身的工作正常的步驟(鏈接到亞馬遜的教程Here)。但是,本教程不會在您自己的項目中運行該jar。我不希望所有其他開發人員在每次測試代碼時都必須抓取jar並在本地運行。作爲Gradle Java項目的一部分運行Dynamodb

這就是我的問題出現的地方。我很難在網上找到任何關於如何配置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') 

import語句仍會失敗。這是一個失敗的例子。

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

TL; DR

有沒有人設法讓dynamodb當地罐子執行的gradle這個項目的一部分,或者有一個鏈接到一個很好的教程(它沒有成爲我的教程鏈接到)。

+0

我意識到,如果我能先手gradle這個運行下面的命令應該解決我的問題: 的java -Djava.library.path =/DynamoDBLocal_lib罐子DynamoDBLocal.jar -sharedDb – OrwellHindenberg

回答

10

我們有DynamoDB本地工作與gradle。下面是你需要添加到您的gradle.build文件的內容:

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)接下來的兩個步驟是棘手的部分。首先本機文件複製到目錄:

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

4)然後確保你有這個目錄(建立在我們的例子/庫)將Java庫路徑,像這樣:

test.dependsOn copyNativeDeps 
test.doFirst { 
    systemProperty "java.library.path", 'build/libs' 
} 

現在你應該能夠運行./gradlew測試並讓您的測試碰到本地的DynamoDB。

+0

感謝Serega的回答。我不再在這個項目上工作,所以我需要一段時間來測試和驗證你的答案... – OrwellHindenberg

+0

沒問題。希望對於任何其他人來說,這對於尋找修復類似問題的人來說都很有用。 – Serega

+0

我在哪裏可以獲得最新版本的DynamoDBLocal ...我已經設置了Gradle項目並使用1.11.0版本 - 請回復 –

0

最簡單的方式,在我看來,就是:

  1. 從這裏下載JAR: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html#DynamoDBLocal.DownloadingAndRunning

  2. 然後解壓下載的文件夾及其內容添加到/庫 (在此之前創建/libs文件夾)

  3. 最後,將t構建。gradle這個:

    dependencies { 
        runtime files('libs/DynamoDBLocal.jar') 
    } 
    
+0

鏈接可以並且通常會死掉。最好是編輯你的答案,以包括獲得jar或類似的路徑。 – cst1992