-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle
120 lines (104 loc) · 2.91 KB
/
build.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
group 'jsdt'
repositories {
mavenCentral()
}
apply plugin: 'java'
apply plugin: 'application'
def libDir = file( "lib" )
def releaseDir = file( "release" )
configurations {
core
app.extendsFrom core
testImplementation.extendsFrom app
}
dependencies {
app "org.antlr:antlr4:4.9.2"
app 'com.github.javaparser:javaparser-core:3.22.1'
app 'info.picocli:picocli:4.6.1'
core 'org.jolie-lang:jolie:1.10.4'
core 'org.jolie-lang:libjolie:1.10.4'
core 'org.jolie-lang:jolie-cli:1.10.4'
}
sourceSets {
core {
java.srcDir 'src/core/java'
compileClasspath += configurations.core
}
app {
java.srcDir 'src/app/java'
runtimeClasspath += compileClasspath += configurations.core + configurations.app + sourceSets.core.output
}
test {
runtimeClasspath += compileClasspath += configurations.core + configurations.app + sourceSets.core.output + sourceSets.app.output
}
}
build {
dependsOn compileCoreJava
dependsOn compileAppJava
}
def jarOutputFolder = "dist"
version "0.2.1"
task setVersion {
File file = projectDir.toPath().resolve("src/app/resources/project.properties" ).toFile();
if( ! file.exists() ){
file.createNewFile()
}
file.write "version=" + version
}
compileJava.dependsOn( setVersion )
task jarApplication( type: Jar ) {
destinationDirectory = file( jarOutputFolder )
manifest {
attributes "Implementation-Title": "JSDT Application Implementation",
"Implementation-Version": project.version,
'Main-Class': 'jsdt.JSDT'
}
setDuplicatesStrategy( DuplicatesStrategy.WARN )
from sourceSets.app.output
from sourceSets.core.output
from {
configurations.app.collect { it.isDirectory() ? it : zipTree(it) }
}
archiveBaseName.set( "jsdt" )
}
task jarCore( type: Jar ) {
manifest {
attributes "Implementation-Title": "JSDT core library",
"Implementation-Version": project.version
}
from sourceSets.core.output
destinationDirectory = file( jarOutputFolder )
setDuplicatesStrategy( DuplicatesStrategy.WARN )
archiveBaseName.set( "jsdt-core" )
}
jar {
enabled = false // this avoids creating an empty "project" jar file
finalizedBy jarCore
finalizedBy jarApplication
}
clean.doFirst{
delete jarOutputFolder
delete releaseDir
}
import org.apache.tools.ant.filters.ReplaceTokens
task makeRelease {
tasks.compileJava.mustRunAfter( clean )
dependsOn( clean )
dependsOn( build )
dependsOn( jar )
doLast{
copy {
from( jarOutputFolder ){
include "jsdt-core*.jar"
}
into releaseDir.toPath().resolve( "dist" )
}
copy {
from( projectDir ){
include "jpm.json"
}
into releaseDir
filter( ReplaceTokens, tokens: [ VERSION: version ] )
}
}
}