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' が見つかりませんでした。