-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen-jflex.gradle
40 lines (34 loc) · 1.34 KB
/
gen-jflex.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def jflexDescription = 'Generate lexer Java classes for JFlex files'
def generatedJavaDir = file("$buildDir/generated-sources").absolutePath;
//def generatedJavaDir = file("$projectDir/src/main/java").absolutePath;
def sourceJFlexDir = file("$projectDir/src/main/resources").absolutePath;
def jflexAntMask = "**/*.jflex";
def jflexMainClass = "jflex.Main";
task generateJFlexLexerSources() {
description = jflexDescription
outputs.dir file(generatedJavaDir)
outputs.upToDateWhen { false }
fileTree(dir: sourceJFlexDir, include: jflexAntMask).each { file ->
doLast {
def absoluteNormalizedPath = new File("$file.path").absolutePath;
def relPath = absoluteNormalizedPath.replace(sourceJFlexDir, '');
if (!relPath.equals(absoluteNormalizedPath)) {
//del separator
relPath = relPath.substring(1);
}
def relDir = new File(relPath).parent;
javaexec {
classpath = sourceSets.main.runtimeClasspath
main = jflexMainClass
args = ["--verbose", "-d", generatedJavaDir + file.separator + relDir, "$file.path"]
}
}
}
}
compileJava.dependsOn generateJFlexLexerSources
repositories {
mavenCentral()
}
dependencies {
runtime group: 'de.jflex', name: 'jflex', version: '1.6.1'
}