Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it possible to read logback version from catalog #562

Merged
merged 5 commits into from May 22, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '8'
java-version: '17'
- name: Check plugin
run: ./gradlew check
env:
Expand Down
29 changes: 0 additions & 29 deletions .github/workflows/release-notes.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Expand Up @@ -15,8 +15,8 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '8'
distribution: 'temurin'
java-version: '17'
ref: ${{ github.head_ref }}
- name: Set the current release version
id: release_version
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Expand Up @@ -170,8 +170,8 @@ gradlePlugin {
java {
withJavadocJar()
withSourcesJar()
sourceCompatibility = 8
targetCompatibility = 8
sourceCompatibility = 17
targetCompatibility = 17
}

def ossUser = System.getenv("SONATYPE_USERNAME") ?: project.hasProperty("sonatypeOssUsername") ? project.sonatypeOssUsername : ''
Expand Down
Expand Up @@ -45,7 +45,7 @@ class MicronautBuildCommonPlugin implements Plugin<Project> {
}
def byteBuddyVersionProvider = versionProviderOrDefault(project, 'bytebuddy', '1.12.18')
def objenesisVersionProvider = versionProviderOrDefault(project, 'objenesis', '3.1')
def logbackVersionProvider = versionProviderOrDefault(project, 'logback', '1.2.3')
def logbackVersionProvider = versionProviderOrDefault(project, 'logback', List.of("mnLogging", "libs"), '')
msupic marked this conversation as resolved.
Show resolved Hide resolved

project.configurations {
documentation
Expand Down
37 changes: 33 additions & 4 deletions src/main/java/io/micronaut/build/utils/VersionHandling.java
Expand Up @@ -20,33 +20,61 @@
import org.gradle.api.artifacts.VersionConstraint;
import org.gradle.api.provider.Provider;

import java.util.ArrayDeque;
import java.util.Collections;
import java.util.Deque;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class VersionHandling {
private static final List<String> DEFAULT_CATALOGS = Collections.singletonList("libs");

/**
* Returns a version defined in the catalog. If not found,
* looks for a property (typically declared in gradle.properties).
*/
private static String versionOrDefault(
Project project,
String alias,
List<String> catalogNames,
String defaultVersion) {
VersionCatalogsExtension catalogs = project.getExtensions().findByType(VersionCatalogsExtension.class);
if (catalogs == null) {
return projectProperty(project, alias, defaultVersion);
}
return catalogs.find("libs")
Optional<String> version = Optional.empty();
Deque<String> deque = new ArrayDeque<>(catalogNames);
String catalogName;
while ((catalogName = deque.poll()) != null) {
String currentCatalog = catalogName;
version = version.or(() -> findVersionInCatalog(currentCatalog, alias, catalogs));
}
return version.orElseGet(() -> projectProperty(project, alias, defaultVersion));
}

private static Optional<String> findVersionInCatalog(String catalogName, String alias, VersionCatalogsExtension catalogs) {
return catalogs.find(catalogName)
.flatMap(catalog -> {
Optional<VersionConstraint> version = catalog.findVersion(alias);
if (version.isPresent()) {
return version;
}
return catalog.findVersion("managed." + alias);
})
.map(VersionConstraint::getRequiredVersion)
.orElseGet(() -> projectProperty(project, alias, defaultVersion));
.map(VersionConstraint::getRequiredVersion);
}

/**
* Returns a version provider defined in the catalog. If not found,
* looks for a property (typically declared in gradle.properties).
*/
public static Provider<String> versionProviderOrDefault(
Project project,
String alias,
String defaultVersion) {
return project.provider(() -> versionOrDefault(project, alias, DEFAULT_CATALOGS, defaultVersion));
}

/**
Expand All @@ -56,8 +84,9 @@ private static String versionOrDefault(
public static Provider<String> versionProviderOrDefault(
Project project,
String alias,
List<String> catalogNames,
String defaultVersion) {
return project.provider(() -> versionOrDefault(project, alias, defaultVersion));
return project.provider(() -> versionOrDefault(project, alias, catalogNames, defaultVersion));
}

private static String propertyNameFor(String alias) {
Expand Down