私はgradleを使用してPythonバインディングをコンパイルしています。 これを容易にするplugin by linkedinがあります。リポジトリが追加され、依存関係が解決される前にタスクを実行します。
また、Pythonの依存関係をivyリポジトリに変換するpivy-importerというプロジェクトも含まれています。
私は、ピボットインポーターをPythonタスクとして実行できるようにラップするgradleプラグインを作成しました。
私のリポジトリは、このように宣言されています
repositories {
pyGradlePyPi()
ivy {
name 'pypi-local' //optional, but nice
url "${project.buildDir.path}/pythonIvy"
layout "pattern", {
ivy "[organisation]/[module]/[revision]/[module]-[revision].ivy"
artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
m2compatible = true
}
}
}
問題は、しかし、プラグインが実行される前に、リポジトリがロードされていることです。
Pythonのタスクが実行されることを最初のタスクはpinRequirements
あるので、私はこのような、その前に私のcusom pythonImporter
タスクを追加しました:私はそれを行う場合でも、
pinRequirements.dependsOn pythonImporter
しかし、コンソールはpythonImporter
タスクがあることを示しています以前は実行中でしたが、依存関係をアセンブルしようとするとすぐに、ファイルシステムに存在していてもそれらを見つけることはできません。
ただし、タスクを再実行すると、最初の実行でリポジトリがファイルシステムに追加されたため、タスクが再実行されます。
TL; DR
私は依存関係の前にタスクを実行するための方法が必要ですがrepositories
がロードされて構成されたプロジェクトのを使用しての下で見上げています。