2

コードをコンパイルする前に、メイン メソッドを持つ Java クラスを実行する必要があります。これは私がこれまでに試したことです:

task runSimple(type: JavaExec) {
    main = 'jjrom.ObjectGen'
    classpath = sourceSets.main.runtimeClasspath
    File prop1 = file(propFilePath)
    args '-sqlserver', '-force', prop1.path
    println "I'm done executing."
}
compileJava {
    dependsOn runSimple
}

コマンド "gradle compileJava" を使用してこのスクリプトを実行すると、次のエラー メッセージが表示されます。

実行が完了しました。

FAILURE: ビルドは例外で失敗しました。

問題: 次のタスク間の循環依存: :classes --- :compileJava --- :runSimple --- :classes (*)

4

2 に答える 2

2

コードをコンパイルする前にこのクラスを実行する必要がある場合は、それを与えることはできませんclasspath = sourceSets.main.runtimeClasspath。後者にはコンパイルされたコードが含まれているため、Gradle は自動的にrunSimple.dependsOn compileJavaを推測しますcompileJava.dependsOn runSimple。(正確には、Gradle は を推論runSimple.dependsOn classesし、これは に依存しcompileJavaます。)

于 2013-10-23T00:16:34.423 に答える
0

クラスパスJavaExecのみで実行する必要がある場合は、変数を次のように変更します。dependeciesclasspath

classpath = configurations.compile

または、非常に特定のクラスパスに関心がある場合は、次のようなカスタム構成を追加できます:

configurations {
    customClasspath
}

dependencies {
    customClasspath files('path/to/your.jar')
}

task runSimple(type: JavaExec) {
    main = 'jjrom.ObjectGen'
    classpath = configurations.customClasspath
    File prop1 = file(propFilePath)
    args '-sqlserver', '-force', prop1.path
    println "I'm done executing."
}

compileJava {
    dependsOn runSimple
}
于 2015-12-29T07:51:41.187 に答える