Gradle에서 Saga Javascript 코드 적용 범위로 전화를 걸려고했습니다. 오랫동안 연주 한 후에 마침내 효과를 낼 수있었습니다. 그러나, 나는 gradle에 새로 왔고, 내가 그것을했던 방식이 가장 합리적인지 아닌지에 관해 모른다! 이렇게하는 데는 몇 가지 방법이있을 것 같아서,이 길은 괜찮은지, 아니면 더 좋은 길을 찾았는지 알기 위해 내가 여기에했던 것을 게시 할 것이라고 생각했습니다.gradle에서 임의의 메서드를 호출하는 방법은 무엇입니까?
maven central에서 saga-core를 다운로드 한 후 Java "main"이 없음이 밝혀졌습니다. 따라서 JavaExec을 쉽게 사용할 수 있다고 생각하지 않았습니다. Java 객체를 만들고, 일부 매개 변수를 설정하고, 제공된 "run"메소드를 호출해야한다는 것을 알게되었습니다.
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')
}