aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-web/build.gradle
blob: a1d4753a86288dce66d48c788b9cea56daa94a16 (plain) (blame)
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
plugins {
	id 'refinery-java-application'
	id 'refinery-xtext-conventions'
}

configurations {
	webapp {
		canBeConsumed = false
		canBeResolved = true
	}
	
	all {
		// Use log4j-over-slf4j instead of log4j 1.x
		exclude group: 'log4j', module: 'log4j'
	}
}

dependencies {
	implementation project(':refinery-language')
	implementation project(':refinery-language-ide')
	implementation libs.jetty.server
	implementation libs.jetty.servlet
	implementation libs.jetty.websocket.server
	implementation libs.slf4j.api
	implementation libs.slf4j.simple
	implementation libs.slf4j.log4j
	implementation libs.xtend.lib
	implementation libs.xtext.web
	webapp project(path: ':refinery-frontend', configuration: 'productionAssets')
	testImplementation testFixtures(project(':refinery-language'))
	testImplementation libs.jetty.websocket.client
}

def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage')

for (taskName in ['compileJava', 'processResources']) {
	tasks.named(taskName) {
		dependsOn generateXtextLanguage
	}
}

mainClassName = 'tools.refinery.language.web.ServerLauncher'

tasks.named('jar') {
	dependsOn project.configurations.webapp
	from(project.configurations.webapp) {
		into 'webapp'
	}
}

tasks.named('shadowJar') {
	dependsOn project.configurations.webapp
	from(project.sourceSets.main.output)
	configurations = [project.configurations.runtimeClasspath]
	exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*',
		'.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*',
		'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**')
	append('plugin.properties')
	from(project.configurations.webapp) {
		into 'webapp'
	}
}

def jettyRun = tasks.register('jettyRun', JavaExec) {
	dependsOn project.configurations.webapp
	dependsOn sourceSets.main.runtimeClasspath
	classpath = sourceSets.main.runtimeClasspath
	mainClass = mainClassName
	standardInput = System.in
	def baseResource = project.configurations.webapp.incoming.artifacts.artifactFiles.first()
	environment BASE_RESOURCE: baseResource
	group = 'run'
	description = 'Start a Jetty web server serving the Xtex API and assets.'
}