2015-06-29 154 views
1

我想在gradle中構建一個具有多個依賴項的java項目,其中一些是來自maven中央資源庫的jar依賴項,一些是其他java項目依賴項,但也存在本機JNI依賴項。我設法用gradle作爲一個獨立的項目來構建本地依賴項。gradle中的本地依賴關係

現在我想導入編譯.so庫作爲依賴在我的Java項目。我認爲它會這樣工作:

dependencies { 
    compile project(':nameofnativedependency') 
} 

該項目也列在我的settings.gradle文件中。但是,當我編譯該項目時,可能會出現以下錯誤:

Could not determine the dependencies of task ':test

Configuration with name 'default' not found.

因此,必須對錯誤進行配置。什麼是正確的方式(我希望有一個)編譯一個本地項目並在調用項目中導入.so文件?

回答

0

Gradle本地插件使用新的rule based software model。模型元素直到build.gradle完成處理後才被實例化,並且一旦實例化,它們就不可變。要訪問這些元素,您需要將代碼放入components閉包中,並通過$變量訪問模型元素(注意以這種方式訪問​​的元素將被實例化,因此不可變)。

要將Java構建與本機構建集成,您可能需要使用java software model插件,而不是傳統的java插件。我一直在玩它,並有一個buildscript,我開始感到有點自豪,包括從類文件生成標題,構建庫,複製到src /主要/資源的所有步驟捆綁在一起jar,然後在運行時提取和加載libs(雖然這部分還沒有完成; Scijava's native library loader可能是要走的路)。