2016-11-30 10 views
0

私は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がロードされて構成されたプロジェクトのを使用しての下で見上げています。

答えて

0

タスクの実行をbuildSrcサブプロジェクトに移動し、実行に応じてbuildタスクを作成しました。 これは、buildSrcプロジェクトが残りのプロジェクトよりも前に常に評価されているため、「ビルド前」ロジックをそこで実行できるためです。

関連する問題