2017-11-28 10 views
1

私はグラデーションとプレイには比較的新しいです。[Gradle] [Play] compilePlayBinaryScalaはどこに定義されていますか?

私は、構築システムとしてgradleを使用するプレイプロジェクトに取り組んでいます。私はより良いパフォーマンスのためにキャッシュを構築しようとしています。ビルドスキャンから、私は 'compilePlayBinaryScala'がキャッシュ可能でないことを観察し、他のタスクのほとんどは 'compilePlayBinaryScala'に依存しています。 'compilePlayBinaryScala'のキャッシングを有効にすると、実際にビルドがスケールアップされます。

Gradleの公式ドキュメント私は「compilePlayBinaryScala」または任意の他の.*PlayBinaryScalaタスクの明示的なタスク定義を見つけることができませんでした.*PlayBinaryタスク(https://docs.gradle.org/current/userguide/play_plugin.html

を示しています。これらのタスクはどこに定義されていますか?

私の研究から、私はタスクが作成されるかもしれないこのファイルを見ることができました。しかし、わかりません。 https://github.com/gradle/gradle/blob/de399b5015b19c07d94aa2eabec47709fc719a68/subprojects/platform-play/src/main/java/org/gradle/play/plugins/PlayApplicationPlugin.java#L160

私は初心者ですから、なぜこのようにしたのかは非常に参考になります。

答えて

1

タスクはそのファイルに作成されますが、リンク先の方法では作成されません。タスクは、createScalaCompileTask,createJarTaskscreatePlayRunTaskなどのメソッドで各バイナリに対して作成されます。 @Mutate,の@ComponentBinariesは、ルールベースモデルソフトウェアモデル)と呼ばれるGradleの一部です。使用方法はPlay plugin documentationに記載されています。 Gradleのチームは数年のためにこのモデルを試し、最終的にそれに対して決定し、それが正式に廃止予定されていない(ブログ記事State and future of the Gradle Software Modelを参照してください。

compilePlayBinaryScalaのタイプはPlatformScalaCompileである。これは、ドキュメントに記載されている、と./gradlew modelを実行するか、タイプを記録するようなタスクアクションを追加することによっても決定できます。"compilePlayBinaryScala"というタスク名は、プラグインの一部であるいくつかの異なるものから計算されます。プラグインが1つ以上のプラットフォームをサポートしていれば、タスクの命名規則はより明白になります(これは書面の時点ではありません)。oに基づいてタスクを生成する別のプラグインの例nコンポーネント名はGradleのnative supportです。

ルールモデルがどのように構造化されているかについて深く掘り下げる価値はありませんが、メソッドの最初のパラメータは件名であり、残りのパラメータは入力で変更でき、不変です。上にリンクされたメソッドでは、最初のパラメータはModelMap<Task>の型であることがわかります。これは、変更可能なオブジェクトTaskのコレクションです。

は、私は本当にScalaLanguagePluginに更に多くの掘りせずにあなたを与えることができます。 ./gradlew modelは、いくつかのものがどこから来たのか、役立つかもしれないという報告をしますが、物事はそのモデルと通常のGradle構成モデルの間で管理されているため、そうでないかもしれません。

関連する問題