Gradle から Javascript コード カバレッジを佐賀県に発信しようとしていました。長い間遊んだ後、ついにそれを機能させることができました。ただし、私はgradleを初めて使用するので、自分のやり方が最も理にかなっているのかどうかわかりません! これを行うにはかなりの方法があるように思われるので、この方法で問題ないか、より良い方法があるかどうかを知ることができることを期待して、ここで行ったことを投稿すると思いました。
Maven Central から saga-core をダウンロードした後、Java の「メイン」がないことが判明しました。そのため、JavaExec を簡単に使用できるとは思いませんでした。Java オブジェクトを作成し、いくつかのパラメーターを設定し、提供された「実行」メソッドを呼び出す必要があるように見えました。
最終的なbuild.gradleは次のとおりです。
apply plugin: 'groovy'
buildscript {
repositories {
mavenCentral()
}
dependencies {
// add the jar file withe the code you want to execute to gradle's classpath
classpath 'com.github.timurstrekalov:saga-core:1.1.2'
}
}
configurations {
compile
codeCoverageTask
}
dependencies {
groovy localGroovy()
codeCoverageTask 'com.github.timurstrekalov:saga-core:1.1.2'
}
// I thought this was simple and made sense to be co-located here rather than
// another file...
// getting the imports to compile requires adding the "buildscript" section above
import java.io.File
import com.github.timurstrekalov.saga.core.CoverageGenerator
class SagaCoverageTask extends DefaultTask {
def outputDirectory
def baseDirectory
def includes = 'my_includesPattern_here'
def excludes = 'my_excludesPattern_here'
def noInstrumentPatterns = [ 'my_noIntrumentPatterns_here' ]
@TaskAction
def runCoverage() {
// check these were set correctly!
println outputDirectory
println 'baseDir' + baseDirectory
// create an instance of the object
CoverageGenerator generator = new CoverageGenerator(baseDirectory, includes, excludes, outputDirectory)
generator.noInstrumentPatterns = noInstrumentPatterns
// there are params, but they would be handled in the same way if needed
generator.run() // invoke the arbitrary method
}
}
task genCodeCoverage(type: SagaCoverageTask) {
// needed the values of task properties, so these are set here
outputDirectory = new File('' + reportsDir + '/coverage')
baseDirectory = new File('' + projectDir + '/src')
}