forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbom.groovy
More file actions
77 lines (64 loc) · 1.86 KB
/
Copy pathbom.groovy
File metadata and controls
77 lines (64 loc) · 1.86 KB
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
import groovy.xml.*
import java.nio.file.*
def depsw = new StringWriter()
def deps = new MarkupBuilder(depsw)
def propsw = new StringWriter()
def props = new MarkupBuilder(propsw)
def propertyName(String groupId, String artifactId) {
def alias = ["jmespath-java": "aws-java-sdk"]
def names = [artifactId]
def segments = artifactId.split('-')
def partialName = null
for(s in segments) {
if (partialName == null) {
partialName = s
} else {
partialName += "-" + s
}
names.add(partialName)
}
names.addAll(segments)
names.addAll(groupId.split("\\.").reverse())
for (name in names) {
def version = project.properties.get(name + '.version')
if (version == null) {
version = alias[name]
}
if (version != null) {
return '${' + name + '.version}'
}
}
throw new IllegalArgumentException("Unable to find version for <" + groupId + ":" + artifactId + "> on " + names)
}
deps.dependencyManagement {
deps.dependencies {
for (d in project.dependencyManagement.dependencies) {
dependency {
groupId(d.groupId)
artifactId(d.artifactId)
version(propertyName(d.groupId, d.artifactId))
if (d.type != null) {
type(d.type)
}
if (d.scope != null) {
scope(d.scope)
}
}
}
}
}
props.properties {
"jooby.version"(project.version)
for (p in project.properties.sort()) {
if (p.key.endsWith("version")) {
"${p.key}"("${p.value}")
}
}
}
def template = new File("modules/jooby-bom/pom.template.xml").getText("UTF-8")
def content = template.replace("@version", project.version)
.replace("@dependencies", depsw.toString())
.replace("@properties", propsw.toString())
def path = Paths.get("modules", "jooby-bom", "pom.xml")
Files.createDirectories(path.getParent())
Files.write(path, content.getBytes())