Skip to content

Commit 4e166a5

Browse files
committed
Add Micronaut version
1 parent 0b64fc5 commit 4e166a5

File tree

2 files changed

+96
-65
lines changed

2 files changed

+96
-65
lines changed

buildSrc/src/main/kotlin/io/micronaut/build/ProjectGraphBuilder.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import java.time.format.FormatStyle
1515
import java.util.*
1616
import javax.inject.Inject
1717

18+
private const val MICRONAUT_BASELINE_VERSION = "4."
19+
1820
@CacheableTask
1921
abstract class ProjectGraphBuilder : DefaultTask() {
2022
@get:InputDirectory
@@ -299,6 +301,7 @@ abstract class ProjectGraphBuilder : DefaultTask() {
299301
groupId,
300302
props.get("status").toString(),
301303
props.get("githubSlug").toString(),
304+
props.get("micronautVersion").toString(),
302305
props.get("gradleVersion").toString(),
303306
props.get("settingsPluginVersion").toString(),
304307
latestBuildPluginsVersion.get(),
@@ -396,6 +399,7 @@ abstract class ProjectGraphBuilder : DefaultTask() {
396399
val group: String,
397400
val status: String,
398401
val githubSlug: String,
402+
val micronautVersion: String,
399403
val gradleVersion: String,
400404
val settingsPluginVersion: String,
401405
val latestSettingsPluginVersion: String,
@@ -425,11 +429,18 @@ abstract class ProjectGraphBuilder : DefaultTask() {
425429
else -> Quality.YELLOW.emoji
426430
}
427431

432+
val micronautEmoji = when {
433+
micronautVersion.startsWith(MICRONAUT_BASELINE_VERSION) && !micronautVersion.endsWith("-SNAPSHOT") -> Quality.GREEN.emoji
434+
micronautVersion.startsWith(MICRONAUT_BASELINE_VERSION) -> Quality.YELLOW.emoji
435+
else -> Quality.RED.emoji
436+
}
437+
428438
fun asHtml() = """<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="1" STYLE="rounded">
429439
|<TR><TD><B>$name</B></TD></TR>
430-
|<TR><TD>${statusEmoji} Status: $status</TD></TR>
431-
|<TR><TD>${gradleEmoji} Gradle: $gradleVersion</TD></TR>
432-
|<TR><TD>${settingsEmoji} Settings: $settingsPluginVersion</TD></TR>
440+
|<TR><TD>${statusEmoji} Status $status</TD></TR>
441+
|${if (name!="core") {"""<TR><TD>${micronautEmoji} Micronaut $micronautVersion</TD></TR>"""} else {""} }
442+
|<TR><TD>${gradleEmoji} Gradle $gradleVersion</TD></TR>
443+
|<TR><TD>${settingsEmoji} Settings $settingsPluginVersion</TD></TR>
433444
|${if (buildStatus != null) """<TR><TD>${buildStatusHtml}</TD></TR>""" else ""}
434445
|</TABLE>""".trimMargin()
435446

src/init.gradle

Lines changed: 82 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -15,77 +15,95 @@ initscript {
1515
}
1616
}
1717

18-
rootProject {
19-
def settingsPluginVersion = providers.provider {
20-
def settingsFile = ["settings.gradle", "settings.gradle.kts"]
21-
.collect { layout.projectDirectory.file(it).asFile }
22-
.find { it.exists() }
23-
if (settingsFile != null) {
24-
return findSettingsPluginVersion(settingsFile)
18+
String detectedMicronautVersion = "unknown"
19+
gradle.settingsEvaluated {
20+
if (detectedMicronautVersion == "unknown") {
21+
def micronautBuild = it.extensions.findByName("micronautBuild")
22+
if (micronautBuild) {
23+
def version = micronautBuild.micronautVersion
24+
if (version) {
25+
println("Micronaut version: ${version}")
26+
detectedMicronautVersion = version
27+
}
2528
}
26-
return "unknown"
2729
}
28-
def groupProvider = providers.gradleProperty("projectGroup")
29-
.orElse(providers.gradleProperty("projectGroupId"))
30-
.orElse(providers.provider { allprojects.collect { it.group }.findAll().first().toString() })
31-
def collectingService = gradle.sharedServices.registerIfAbsent("micronautDependenciesService", MicronautDependenciesService) {
32-
it.parameters.outputDir.set(file(providers.systemProperty("reportDir").get()))
33-
it.parameters.groupId.set(groupProvider)
34-
it.parameters.githubSlug.set(providers.gradleProperty("githubSlug"))
35-
it.parameters.settingsPluginVersion.set(settingsPluginVersion)
36-
}
37-
def cachedStatus = null
38-
allprojects {
39-
pluginManager.withPlugin('maven-publish') {
40-
tasks.register("extractMicronautDependencies", ExtractMicronautDependencies) { t ->
41-
t.service.set(collectingService)
42-
t.usesService(collectingService)
43-
t.groupId = groupProvider
44-
def moduleName = project.name
45-
if (!moduleName.startsWith('micronaut-')) {
46-
moduleName = "micronaut-$moduleName"
47-
}
48-
t.status = providers.gradleProperty("projectVersion").zip(groupProvider) { version, group ->
49-
if (cachedStatus != null) {
50-
return cachedStatus
30+
}
31+
32+
33+
rootProject {
34+
if (name != 'buildSrc') {
35+
def settingsPluginVersion = providers.provider {
36+
def settingsFile = ["settings.gradle", "settings.gradle.kts"]
37+
.collect { layout.projectDirectory.file(it).asFile }
38+
.find { it.exists() }
39+
if (settingsFile != null) {
40+
return findSettingsPluginVersion(settingsFile)
41+
}
42+
return "unknown"
43+
}
44+
def groupProvider = providers.gradleProperty("projectGroup")
45+
.orElse(providers.gradleProperty("projectGroupId"))
46+
.orElse(providers.provider { allprojects.collect { it.group }.findAll().first().toString() })
47+
def collectingService = gradle.sharedServices.registerIfAbsent("micronautDependenciesService", MicronautDependenciesService) {
48+
it.parameters.outputDir.set(file(providers.systemProperty("reportDir").get()))
49+
it.parameters.groupId.set(groupProvider)
50+
it.parameters.githubSlug.set(providers.gradleProperty("githubSlug"))
51+
it.parameters.settingsPluginVersion.set(settingsPluginVersion)
52+
it.parameters.micronautVersion.set(detectedMicronautVersion)
53+
}
54+
def cachedStatus = null
55+
allprojects {
56+
pluginManager.withPlugin('maven-publish') {
57+
tasks.register("extractMicronautDependencies", ExtractMicronautDependencies) { t ->
58+
t.service.set(collectingService)
59+
t.usesService(collectingService)
60+
t.groupId = groupProvider
61+
def moduleName = project.name
62+
if (!moduleName.startsWith('micronaut-')) {
63+
moduleName = "micronaut-$moduleName"
5164
}
52-
if (version.endsWith("-SNAPSHOT")) {
53-
def versionWithoutSnapshot = version - '-SNAPSHOT'
54-
String metadataUrl = "https://repo1.maven.org/maven2/${group.replace('.', '/')}/$moduleName/maven-metadata.xml"
55-
println "Metadata URL is $metadataUrl"
56-
try {
57-
new URL(metadataUrl).withInputStream {
58-
def metadata = new groovy.xml.XmlSlurper().parse(it)
59-
def versions = metadata.versioning.versions.version as List
60-
def matchingVersions = versions.findAll { it.text().startsWith(versionWithoutSnapshot) }
61-
if (!matchingVersions.empty) {
62-
String last = matchingVersions.last()
63-
if (last.contains('-')) {
64-
cachedStatus = last.substring(last.lastIndexOf('-') + 1)
65+
t.status = providers.gradleProperty("projectVersion").zip(groupProvider) { version, group ->
66+
if (cachedStatus != null) {
67+
return cachedStatus
68+
}
69+
if (version.endsWith("-SNAPSHOT")) {
70+
def versionWithoutSnapshot = version - '-SNAPSHOT'
71+
String metadataUrl = "https://repo1.maven.org/maven2/${group.replace('.', '/')}/$moduleName/maven-metadata.xml"
72+
println "Metadata URL is $metadataUrl"
73+
try {
74+
new URL(metadataUrl).withInputStream {
75+
def metadata = new groovy.xml.XmlSlurper().parse(it)
76+
def versions = metadata.versioning.versions.version as List
77+
def matchingVersions = versions.findAll { it.text().startsWith(versionWithoutSnapshot) }
78+
if (!matchingVersions.empty) {
79+
String last = matchingVersions.last()
80+
if (last.contains('-')) {
81+
cachedStatus = last.substring(last.lastIndexOf('-') + 1)
82+
} else {
83+
cachedStatus = "RELEASE"
84+
}
6585
} else {
66-
cachedStatus = "RELEASE"
86+
cachedStatus = "SNAPSHOT"
6787
}
68-
} else {
69-
cachedStatus = "SNAPSHOT"
7088
}
89+
} catch (IOException ex) {
90+
cachedStatus = "SNAPSHOT"
7191
}
72-
} catch (IOException ex) {
73-
cachedStatus = "SNAPSHOT"
92+
} else {
93+
cachedStatus = "RELEASE"
7494
}
75-
} else {
76-
cachedStatus = "RELEASE"
95+
cachedStatus
7796
}
78-
cachedStatus
79-
}
80-
['apiElements', 'runtimeElements'].each {
81-
def conf = configurations.findByName(it)
82-
if (conf != null) {
83-
t.dependencies.addAll(providers.provider {
84-
conf.allDependencies.findAll { it instanceof ExternalModuleDependency }
85-
.collect { (ExternalModuleDependency) it }
86-
.findAll { it.group.startsWith('io.micronaut') }
87-
.collect { "${it.group}".toString() }
88-
})
97+
['apiElements', 'runtimeElements'].each {
98+
def conf = configurations.findByName(it)
99+
if (conf != null) {
100+
t.dependencies.addAll(providers.provider {
101+
conf.allDependencies.findAll { it instanceof ExternalModuleDependency }
102+
.collect { (ExternalModuleDependency) it }
103+
.findAll { it.group.startsWith('io.micronaut') }
104+
.collect { "${it.group}".toString() }
105+
})
106+
}
89107
}
90108
}
91109
}
@@ -121,6 +139,7 @@ abstract class MicronautDependenciesService implements BuildService<Params>, Aut
121139
Property<String> getGroupId()
122140
Property<String> getGithubSlug()
123141
Property<String> getSettingsPluginVersion()
142+
Property<String> getMicronautVersion()
124143
}
125144

126145
abstract SetProperty<String> getDependencies()
@@ -143,6 +162,7 @@ abstract class MicronautDependenciesService implements BuildService<Params>, Aut
143162
props.put("status", status.get())
144163
props.put("gradleVersion", GradleVersion.current().version)
145164
props.put("settingsPluginVersion", parameters.settingsPluginVersion.get())
165+
props.put("micronautVersion", parameters.micronautVersion.get())
146166
properties.getOrElse(Collections.emptyMap()).each { k, v ->
147167
props.put(k, v)
148168
}

0 commit comments

Comments
 (0)