首先:對不起,但我真的不知道如何清除問題。Maven + Spring:使用彈簧自動裝配模塊的資源
我有一個maven項目中有幾個模塊。 所有模塊都非常簡單,因爲它們爲主Web-App模塊提供了一些特殊的邏輯類。 這些邏輯類是在春季運行時注入的。
以下是我的Maven設置(抽象爲簡單起見)
- 芯模塊(提供用於所有模塊的接口和基本類)
- 算法模塊(其提供特殊的算法模塊,實現一個代碼 - 模塊接口)
- web應用程序模塊(彈簧Web應用程序,它使用它們自己註冊爲@Component算法,依賴於核心和算法模塊)
現在的問題: 算法模塊有一個資源 - 在這種情況下是一個python腳本 - 我想要在系統Python解釋器上執行。 (資源/ pythonscript.py)
所有可用的算法類(實現公制接口)是由春到網絡應用程序控制器注入:
@Autowired
List<Metric> metrics;
之後,用戶選擇他想要執行的算法:
metric.performCalculations(dataset);
此執行,後來嘗試運行從模塊的資源目錄的python腳本邏輯:
URL url = NXBetweennessCentrality.class.getResource("bc/betweenness_centrality.py");
logger.debug("URL: {}", url); //=> null
我試圖sevaral組合:
class.getResourceAsStream(resourcePath)
class.getClassLoader().getResources("")
基本上一切從How do I load a file from resource folder?但我不能加載該資源。
當我嘗試訪問maven dependencys項目的資源時(Use a dependency's resources?),我聽說有問題,但在我的情況下,我從擁有該資源的包中執行類 - 所以應該沒有問題,至少這就是我思想。
有人可以指出我的錯誤嗎?沒有一些棘手的解決方法,這是不可能的?
那麼唯一的解決方案是在構建過程中將資源從依賴項重新打包到web-app模塊中? (喜歡在我鏈接到的線程?) – bigbasti
是的。要麼嘗試使用一些彙編插件。否則將Python腳本保存在Web應用程序運行的服務器中的公共位置,並通過在VM參數中傳入Python腳本的位置來加載它運行時 – codespawner