Gradle で 2 つの異なる構成タスクを必要とする可能性のあるタスクを明確に分離するにはどうすればよいですか? buildSrc/dbhelpertasks.gradle ファイルで実行したい実際のタスクを、親の build.gradle ファイルから分離しようとしています。build.gradle には、dbhelpertasks.gradle で使用される部分的に構成されたタスクが含まれます。
接続して SQL を実行したいデータベースが多数あるため、データベース名と URL を受け取る SQLServerTask を作成しました。
カスタム SQLServerTask.groovy
org.gradle.api.DefaultTask をインポート org.gradle.api.tasks.TaskAction をインポートします groovy.sql.Sql をインポートする クラス SQLServerTask は DefaultTask を拡張します { デフォルトのホスト名 デフデータベース デフォルトポート = 1433 デフォルトのユーザー名 デフォルトパスワード デフSQL def sqlServerDriver = 'net.sourceforge.jtds.jdbc.Driver' @タスクアクション def executeSql() { url = ホスト名 + ":" + ポート + "/" + データベース databaseConnProps = [ユーザー: ユーザー名、パスワード: パスワード] def sqlInstance = Sql.newInstance (url、databaseConnProps、sqlServerDriver) println "実行します" + sql } }
次に、いくつかのプロパティを使用して SQLServerTask を構成するタスクを build.gradle に作成しました。
build.gradle
groovy.sql.Sql をインポートする 適用元: 'buildSrc/dbhelpertasks.gradle' リポジトリ { mavenCentral() } 構成 { 運転者 } 依存関係{ ドライバー グループ:「net.sourceforge.jtds」、名前:「jtds」、バージョン:「1.2.4」 } //このプロジェクトで使用するすべてのドライバーをロードします URLClassLoader loader = GroovyObject.class.classLoader configuration.driver.each {ファイル file -> loader.addURL(ファイル.toURL()) } タスク contentDbTask(タイプ: SQLServerTask) { println "コンテンツ データベース タスクの構成" ホスト名 = contentDbUrl データベース = contentDbName ユーザー名 = contentDbUserName パスワード = contentDbPassword }
dbhelpertasks.gradle ファイルには、実行する実際のタスクの最終構成 (SQL ステートメント) が含まれています。
buildSrc/dbhelpertasks.gradle
task getSiteParams(type: contentDbTask) { println "サイト パラメータ タスクの構成" sql = "SELECT * FROM CMS_SITE_PARAM" }
実行するgradle getSiteParams
と失敗する
* 何が悪かったのか: スクリプトの評価中に問題が発生しました。 > ルート プロジェクト 'shipyard' でプロパティ 'contentDbTask' が見つかりませんでした。