3

Flyway用の Gradle プラグインを作成する一環として、Java の移行を処理する際に問題に遭遇しました。

プロジェクトのコンパイル済みクラスへのクラスパスへのアクセスをGradleプラグインに提供して、それらをロードして実行できるようにする最良の方法は何ですか?

4

1 に答える 1

2

そのため、プラグインが適用されるプロジェクトに含まれるコードを実行するタスクを追加するプラグインがあるという状況です。Iterable<File>この場合、タスク (クラス)には、実行されるコードのクラスパス (例: ) を使用して (プラグインによって) 設定されるタイプの入力プロパティが必要sourceSets.main.runtimeClasspathです。その後、タスクは次の方法からコードを実行する方法を選択できます。

  • このタスクはproject.javaexec {}、別の JVM でコードを実行するために使用します。コードを直接実行できない場合、タスクはブートストラップ コードをjavaexecクラス パスに挿入する必要がある場合があります。を使用する代わりに考えられるのは、最初にタスクproject.javaexecを使用することです。JavaExec
  • このタスクは、新しいクラス ローダーを作成し、それにクラス パスを設定し、API へのエントリ ポイントとして機能するクラスをロードしてインスタンス化し、必要に応じてそれらを使用します。タスクが Groovy で記述されている場合は、ダック タイピングを活用でき、エントリ ポイントの作成以外にリフレクション コードは必要ありません。
于 2013-03-29T14:37:52.253 に答える