@@ -135,12 +135,14 @@ configurations {
135
135
mps
136
136
languageLibs
137
137
junitAnt
138
+ pcollections // Synced to org.iets3.core.expr.base.collections.stubs/lib
138
139
}
139
140
140
141
dependencies {
141
142
mps " com.jetbrains:mps:$mpsVersion "
142
143
languageLibs " com.mbeddr:platform:$mbeddrVersionSelector "
143
144
junitAnt ' org.apache.ant:ant-junit:1.10.6'
145
+ pcollections ' org.pcollections:pcollections:3.1.4'
144
146
}
145
147
146
148
repositories {
@@ -159,21 +161,40 @@ repositories {
159
161
mavenCentral()
160
162
}
161
163
162
- task resolveMps (type : Copy ) {
164
+ task resolveMps (type : Sync ) {
163
165
dependsOn configurations. mps
164
166
from {
165
167
configurations. mps. resolve(). collect { zipTree(it) }
166
168
}
167
169
into " $buildDir /mps"
168
170
}
169
171
170
- task resolveLanguageLibs (type : Copy ) {
172
+ task resolveLanguageLibs (type : Sync ) {
171
173
from {
172
174
configurations. languageLibs. resolve(). collect { zipTree(it) }
173
175
}
174
176
into " $buildDir /dependencies"
175
177
}
176
178
179
+ task resolvePcollections (type : Sync ) {
180
+ from configurations. pcollections
181
+ into file(' code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.base.collections.stubs/lib' )
182
+
183
+ // Strip version numbers from file names
184
+ rename { filename ->
185
+ def ra = configurations. pcollections. resolvedConfiguration. resolvedArtifacts. find { ResolvedArtifact ra -> ra. file. name == filename }
186
+ String finalName
187
+ if (ra. classifier != null ) {
188
+ finalName = " ${ ra.name} -${ ra.classifier} .${ ra.extension} "
189
+ } else {
190
+ finalName = " ${ ra.name} .${ ra.extension} "
191
+ }
192
+ return finalName
193
+ }
194
+ }
195
+
196
+ task resolveDependencies (dependsOn : [resolveLanguageLibs, resolvePcollections])
197
+
177
198
// Default arguments for ant scripts
178
199
def defaultScriptArgs = [
179
200
' mps.home' : resolveMps. destinationDir,
@@ -194,7 +215,7 @@ ext["itemis.mps.gradle.ant.defaultScriptArgs"] = defaultScriptArgs.collect { "-D
194
215
ext[" itemis.mps.gradle.ant.defaultScriptClasspath" ] = defaultScriptClasspath
195
216
ext[" itemis.mps.gradle.ant.defaultJavaExecutable" ] = new File (jdk_home, ' bin/java' )
196
217
197
- task buildAllScripts (type : BuildLanguages , dependsOn : [resolveMps, resolveLanguageLibs ]) {
218
+ task buildAllScripts (type : BuildLanguages , dependsOn : [resolveMps, resolveDependencies ]) {
198
219
script " $buildDir /scripts/build-allScripts.xml"
199
220
}
200
221
@@ -243,6 +264,27 @@ task packageDistroWithDependencies(type: Zip, dependsOn: buildDistroWithDependen
243
264
244
265
assemble. dependsOn packageLanguages, packageTests
245
266
267
+ static def addDependency (Object pom , Object groupId , Object artifactId , Object version , Object type = null ) {
268
+ pom. withXml { XmlProvider prov ->
269
+ Node root = prov. asNode()
270
+ Node deps = root. dependencies[0 ] ?: root. appendNode(" dependencies" )
271
+ def dep = deps. appendNode(" dependency" )
272
+ dep. appendNode(" groupId" , groupId)
273
+ dep. appendNode(" artifactId" , artifactId)
274
+ dep. appendNode(" version" , version)
275
+ if (type != null ) {
276
+ dep. appendNode(" type" , type)
277
+ }
278
+ }
279
+ }
280
+
281
+ static def addDependency (Object pom , Configuration config ) {
282
+ config. resolvedConfiguration. firstLevelModuleDependencies. each {
283
+ addDependency(pom, it. moduleGroup, it. moduleName, it. moduleVersion, it. moduleArtifacts[0 ]. type)
284
+ }
285
+
286
+ }
287
+
246
288
publishing {
247
289
repositories {
248
290
maven {
@@ -275,46 +317,80 @@ publishing {
275
317
groupId ' org.iets3'
276
318
artifactId ' opensource'
277
319
artifact packageLanguages
278
- pom. withXml {
279
- def dependenciesNode = asNode(). appendNode(' dependencies' )
280
- configurations. languageLibs. resolvedConfiguration. firstLevelModuleDependencies. each{
281
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
282
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
283
- dependencyNode. appendNode(' artifactId' , it. moduleName)
284
- dependencyNode. appendNode(' version' , it. moduleVersion)
285
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
286
- }
287
- configurations. mps. resolvedConfiguration. firstLevelModuleDependencies. each{
288
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
289
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
290
- dependencyNode. appendNode(' artifactId' , it. moduleName)
291
- dependencyNode. appendNode(' version' , it. moduleVersion)
292
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
293
- dependencyNode. appendNode(' scope' , ' provided' )
294
- }
295
- }
320
+
321
+ addDependency(pom, configurations. languageLibs)
296
322
}
323
+
297
324
tests(MavenPublication ) {
298
325
groupId ' org.iets3.opensource'
299
326
artifactId ' tests'
300
327
artifact packageTests
301
- pom. withXml {
302
- def dependenciesNode = asNode(). appendNode(' dependencies' )
303
- configurations. mps. resolvedConfiguration. firstLevelModuleDependencies. each{
304
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
305
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
306
- dependencyNode. appendNode(' artifactId' , it. moduleName)
307
- dependencyNode. appendNode(' version' , it. moduleVersion)
308
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
309
- }
328
+
329
+ addDependency(pom, ' org.iets3' , ' opensource' , project. version, ' zip' )
330
+ }
331
+
332
+ def runtimesDir = new File (artifactsDir, ' org.iets3.opensource/org.iets3.core.os/languages/iets3.core.os' )
333
+
334
+ ' org.iets3.core.expr.base.shared.runtime' (MavenPublication ) {
335
+ groupId ' org.iets3.core.expr.base.shared'
336
+ artifactId ' shared-runtime'
337
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.base.shared.runtime.jar' )) {
338
+ builtBy buildLanguages
339
+ }
340
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.base.shared.runtime-src.jar' )) {
341
+ builtBy buildLanguages
342
+ classifier ' sources'
343
+ }
344
+ }
345
+
346
+ ' org.iets3.core.expr.simpleTypes.runtime' (MavenPublication ) {
347
+ // GitHub Packages refuse uppercase artifactId (not sure about groupId) so use lower case here
348
+ groupId ' org.iets3.core.expr.simpletypes'
349
+ artifactId ' simpletypes-runtime'
350
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.simpleTypes.runtime.jar' )) {
351
+ builtBy buildLanguages
352
+ }
353
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.simpleTypes.runtime-src.jar' )) {
354
+ builtBy buildLanguages
355
+ classifier ' sources'
356
+ }
357
+
358
+ addDependency(pom, ' org.iets3.core.expr.base.shared' , ' shared-runtime' , project. version)
359
+ }
360
+
361
+ ' org.iets3.core.expr.datetime.runtime' (MavenPublication ) {
362
+ groupId ' org.iets3.core.expr.datetime'
363
+ artifactId ' datetime-runtime'
364
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.datetime.runtime.jar' )) {
365
+ builtBy buildLanguages
366
+ }
367
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.datetime.runtime-src.jar' )) {
368
+ builtBy buildLanguages
369
+ classifier ' sources'
370
+ }
371
+
372
+ addDependency(pom, ' org.iets3.core.expr.base.shared' , ' shared-runtime' , project. version)
373
+ }
374
+
375
+ ' org.iets3.core.expr.temporal.runtime' (MavenPublication ) {
376
+ groupId ' org.iets3.core.expr.temporal'
377
+ artifactId ' temporal-runtime'
378
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.temporal.runtime.jar' )) {
379
+ builtBy buildLanguages
310
380
}
381
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.temporal.runtime-src.jar' )) {
382
+ builtBy buildLanguages
383
+ classifier ' sources'
384
+ }
385
+
386
+ addDependency(pom, ' org.iets3.core.expr.datetime' , ' datetime-runtime' , project. version)
311
387
}
312
388
}
313
389
}
314
390
315
391
316
392
task generateLibrariesXml (type : GenerateLibrariesXml ) {
317
- dependsOn resolveLanguageLibs
393
+ dependsOn resolveDependencies
318
394
description " Will read project libraries from projectlibraries.properties and generate libraries.xml in .mps directory. Libraries are loaded in mps during start."
319
395
defaults rootProject. file(' projectlibraries.properties' )
320
396
overrides rootProject. file(' projectlibraries.overrides.properties' )
@@ -323,7 +399,7 @@ task generateLibrariesXml(type: GenerateLibrariesXml) {
323
399
324
400
task setup {
325
401
dependsOn generateLibrariesXml
326
- dependsOn resolveLanguageLibs
402
+ dependsOn resolveDependencies
327
403
description ' Set up MPS project libraries. Libraries are read in from projectlibraries.properties file.'
328
404
}
329
405
0 commit comments