First:タイトルには申し訳ありませんが、私は質問に夢中になる方法は本当に分かりませんでした。Maven + Spring:Springでautowiredされたモジュールのリソースを使用してください。
私はいくつかのモジュールを含むmavenプロジェクトを持っています。 メインWeb-Appモジュールにいくつかの特別なロジッククラスを提供するので、すべてのモジュールは本当にシンプルです。 これらのロジッククラスは、実行時に春までに注入されます。続い
は
- コアモジュールであります-modulesインタフェース)
- ウェブ・アプリケーション・モジュール(@Componentとして自身を登録するアルゴリズムを使用し春Webアプリケーションが、コア及びアルゴリズムモジュールに依存する)
問題: アルゴリズムモジュールには、システムの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
class.getResourceAsStream(resourcePath)
class.getClassLoader().getResources("")
How do I load a file from resource folder?から、基本的にすべてが、私はこのリソースをロードすることはできません。 私はsevaral組み合わせを試してみました。
maven dependencysプロジェクト(Use a dependency's resources?)のリソースにアクセスしようとしたときに問題が聞こえましたが、私の場合はリソースを所有するパッケージからクラスを実行しています - 問題はないはずです。思想。
誰かが間違いを指摘できますか?これはいくつかの面倒な回避策なしでは不可能ですか?
唯一の解決策は、ビルド中にリソースをWeb-Appモジュールへの依存関係から再パッケージすることでしょうか? (私にリンクされているスレッドのように?) – bigbasti
はい。いずれかのアセンブリプラグインを使用しようとします。 Else Pythonスクリプトをサーバーの共通の場所に保管し、Webアプリケーションを実行し、実行時にPythonスクリプトの場所をVM引数に渡してロードします。 – codespawner