diff --git a/MODULE.bazel b/MODULE.bazel index 023d7c6ca..a37a169a2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -117,6 +117,16 @@ enola_maven.install( "org.jsoup:jsoup:1.18.1", "org.apache.tika:tika-core:3.0.0-BETA2", "org.apache.tika:tika-parsers-standard-package:3.0.0-BETA2", + + # Maven Connector + "eu.maveniverse.maven.mima.runtime:standalone-static:2.4.21", + "eu.maveniverse.maven.mima:context:2.4.21", + "eu.maveniverse.maven.mima.extensions:mmr:2.4.21", + "org.apache.maven.resolver:maven-resolver-api:1.9.22", + "org.apache.maven.resolver:maven-resolver-util:1.9.22", + "org.apache.maven:maven-model:3.9.9", + + # IPFS & IPLD etc. "com.github.ipld:java-cid:1.3.8", # TODO Replace with "com.github.multiformats:java-multibase:..." diff --git a/java/dev/enola/model/enola/maven/connect/mima/BUILD b/java/dev/enola/model/enola/maven/connect/mima/BUILD new file mode 100644 index 000000000..d73d92ec0 --- /dev/null +++ b/java/dev/enola/model/enola/maven/connect/mima/BUILD @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: Apache-2.0 +# +# Copyright 2023 The Enola Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@rules_java//java:defs.bzl", "java_library") +load("//tools/bazel:junit.bzl", "junit_tests") + +java_library( + name = "mima", + srcs = glob( + ["*.java"], + exclude = ["*Test.java"], + ), + plugins = ["//tools/bazel/java_plugin:autoservice"], + visibility = ["//:__subpackages__"], + deps = [ + "@enola_maven//:com_google_auto_service_auto_service_annotations", + "@enola_maven//:com_google_errorprone_error_prone_annotations", + "@enola_maven//:com_google_guava_guava", + "@enola_maven//:eu_maveniverse_maven_mima_context", + "@enola_maven//:eu_maveniverse_maven_mima_extensions_mmr", + "@enola_maven//:eu_maveniverse_maven_mima_runtime_standalone_static", + "@enola_maven//:org_apache_maven_maven_model", + "@enola_maven//:org_apache_maven_resolver_maven_resolver_api", + "@enola_maven//:org_apache_maven_resolver_maven_resolver_util", + "@enola_maven//:org_jspecify_jspecify", + "@enola_maven//:org_slf4j_slf4j_api", + ], +) + +junit_tests( + name = "tests", + srcs = glob(["*Test.java"]), + deps = [ + ":mima", + "@enola_maven//:org_apache_maven_resolver_maven_resolver_api", + ], +) diff --git a/java/dev/enola/model/enola/maven/connect/mima/GAVR.java b/java/dev/enola/model/enola/maven/connect/mima/GAVR.java new file mode 100644 index 000000000..c8dc7c1fe --- /dev/null +++ b/java/dev/enola/model/enola/maven/connect/mima/GAVR.java @@ -0,0 +1,183 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2025 The Enola Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dev.enola.model.enola.maven.connect.mima; + +import static com.google.common.base.Strings.isNullOrEmpty; + +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; + +/** + * GAVR is a Maven GroupID, ArtifactID, Version, Extension (AKA Type), Classifier + Repository. + * + *

The GroupID, ArtifactID & Version are mandatory and cannot be empty. The Extension, Classifier + * & Repository can be empty, but never null. + * + *

This class itself does NOT imply any "defaults" for Extension, Classifier & Repository; but + * it's users may well. + */ +public record GAVR( + String groupId, + String artifactId, + String extension, + String classifier, + String version, + String repo) { + + // TODO Consider #performance - make this a class to cache Gradle & PkgURL representations? + + /** + * Parse a "short Gradle-style" GAV in the + * :[:[:]]: format, like e.g. + * "ch.vorburger.mariaDB4j:mariaDB4j-core:3.1.0" to a GAVR. NB: This syntax does not allow + * specifying a repository! + */ + public static GAVR parseGradle(String gav) { + var artifact = new DefaultArtifact(gav); + return new GAVR( + artifact.getGroupId(), + artifact.getArtifactId(), + artifact.getExtension(), + artifact.getClassifier(), + artifact.getVersion(), + ""); + } + + // TODO public GAVR parsePkgURL(String purl), with + // https://github.com/package-url/packageurl-java + + public static class Builder { + private String groupId; + private String artifactId; + private String extension; + private String classifier; + private String version; + private String repo; + + public Builder groupId(String groupId) { + this.groupId = groupId; + return this; + } + + public Builder artifactId(String artifactId) { + this.artifactId = artifactId; + return this; + } + + public Builder extension(String extension) { + this.extension = extension; + return this; + } + + public Builder classifier(String classifier) { + this.classifier = classifier; + return this; + } + + public Builder version(String version) { + this.version = version; + return this; + } + + public Builder repo(String repo) { + this.repo = repo; + return this; + } + + public GAVR build() { + return new GAVR( + groupId, + artifactId, + nullToEmpty(extension), + nullToEmpty(classifier), + version, + nullToEmpty(repo)); + } + + private String nullToEmpty(String string) { + if (string == null) return ""; + else return string; + } + } + + public GAVR { + requireNonEmpty(groupId, "groupId"); + requireNonEmpty(artifactId, "artifactId"); + requireNonNull(extension, "extension"); + requireNonNull(classifier, "classifier"); + requireNonEmpty(version, "version"); + requireNonNull(repo, "repo"); + } + + private void requireNonNull(Object object, String field) { + if (object == null) throw new IllegalStateException(field + " cannot be null"); + } + + private void requireNonEmpty(String string, String field) { + if (isNullOrEmpty(string)) + throw new IllegalStateException(field + " cannot be null or empty"); + } + + /** Return a String in the same format that {@link #parseGradle(String)} uses. */ + @SuppressWarnings("StringBufferReplaceableByString") // pre-sizing is more efficient (?) + public String toGradle() { + var sb = // w.o. repo.length() + new StringBuilder( + 4 // max. 4x ':' + + groupId.length() + + artifactId.length() + + extension.length() + + classifier.length() + + version.length()); + + sb.append(groupId); + sb.append(':'); + sb.append(artifactId); + + if (!extension.isEmpty()) { + sb.append(':'); + sb.append(extension); + } + + if (!classifier.isEmpty()) { + sb.append(':'); + sb.append(classifier); + } + + sb.append(':'); + sb.append(version); + return sb.toString(); + } + + // TODO String toPkgURL() + + public Builder toBuilder() { + return new Builder() + .groupId(groupId) + .artifactId(artifactId) + .extension(extension) + .classifier(classifier) + .version(version); + } + + // NOT public - this is a package private internal method! + // NB: Artifact does NOT include the Repository! Callers will use repository() to obtain that. + Artifact toArtifact() { + return new DefaultArtifact(groupId, artifactId, classifier, extension, version); + } +} diff --git a/java/dev/enola/model/enola/maven/connect/mima/Mima.java b/java/dev/enola/model/enola/maven/connect/mima/Mima.java new file mode 100644 index 000000000..44a1a17c1 --- /dev/null +++ b/java/dev/enola/model/enola/maven/connect/mima/Mima.java @@ -0,0 +1,203 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2025 The Enola Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dev.enola.model.enola.maven.connect.mima; + +import static com.google.common.base.Strings.isNullOrEmpty; + +import static eu.maveniverse.maven.mima.context.ContextOverrides.ChecksumPolicy.FAIL; +import static eu.maveniverse.maven.mima.context.ContextOverrides.SnapshotUpdatePolicy.NEVER; + +import eu.maveniverse.maven.mima.context.Context; +import eu.maveniverse.maven.mima.context.ContextOverrides; +import eu.maveniverse.maven.mima.context.ContextOverrides.ChecksumPolicy; +import eu.maveniverse.maven.mima.context.Runtimes; +import eu.maveniverse.maven.mima.extensions.mmr.MavenModelReader; +import eu.maveniverse.maven.mima.extensions.mmr.ModelRequest; +import eu.maveniverse.maven.mima.extensions.mmr.ModelResponse; + +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Writer; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.RepositoryPolicy; +import org.eclipse.aether.resolution.*; +import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.URI; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Locale; +import java.util.Optional; + +public class Mima implements AutoCloseable { + + private static final ChecksumPolicy ENOLA_DEFAULT_CHECKSUM_POLICY = FAIL; + private static final String ENOLA_DEFAULT_CHECKSUM_POLICY_STRING = + ENOLA_DEFAULT_CHECKSUM_POLICY.name().toLowerCase(Locale.ROOT); + + /** + * This CENTRAL uses FAIL instead of CHECKSUM_POLICY_WARN like ContextOverrides.CENTRAL does! + */ + public static final RemoteRepository CENTRAL = + getRemoteRepository(ContextOverrides.CENTRAL.getUrl()); + + public static final RemoteRepository JITPACK = getRemoteRepository("https://jitpack.io/"); + + private static final Logger logger = LoggerFactory.getLogger(Mima.class); + + private final Context context; + private final MavenModelReader mmr; + + public Mima() { + this(List.of(CENTRAL)); + } + + public Mima(List repos) { + this( + ContextOverrides.create() + .withUserSettings(false) + .addRepositoriesOp(ContextOverrides.AddRepositoriesOp.REPLACE) + .repositories(repos) + .ignoreArtifactDescriptorRepositories(true) + .snapshotUpdatePolicy(NEVER)); + // TODO https://maven.apache.org/resolver/configuration.html configProperties() ?! + } + + public Mima(ContextOverrides.Builder contextOverridesBuilder) { + contextOverridesBuilder.checksumPolicy(ENOLA_DEFAULT_CHECKSUM_POLICY); + // TODO transferListener() to show progress... using a generic Tasks API + + var env = "TEST_TMPDIR"; // see https://bazel.build/reference/test-encyclopedia + var tmp = System.getenv(env); + if (tmp != null) { + Path m2repo = Paths.get(tmp, "maven/repo"); + contextOverridesBuilder.withLocalRepositoryOverride(m2repo); + } + + var runtime = Runtimes.INSTANCE.getRuntime(); + logger.info("Mima Maven Version: {}", runtime.mavenVersion()); + + this.context = runtime.create(contextOverridesBuilder.build()); + this.mmr = new MavenModelReader(context); + } + + @Override + public void close() { + context.close(); + } + + /** + * Fetch a Maven Model from (remote) repositories, given a GAV. + * + * @param gavr a {@link GAVR} + * @return a {@link ModelResponse}, of which you typically care about the {@link + * ModelResponse#getEffectiveModel()} + */ + public ModelResponse get(GAVR gavr) + throws ArtifactResolutionException, + VersionResolutionException, + ArtifactDescriptorException { + var artifact = gavr.toArtifact(); + var request = + ModelRequest.builder() + .setArtifact(artifact) + // TODO https://github.com/maveniverse/mima/issues/166 + // .setRepository(gavr.repo()) + // TODO What is RequestContext really used for?! + .setRequestContext(gavr.toString()) + .build(); + var response = mmr.readModel(request); + if (response == null) throw new IllegalArgumentException(gavr.toGradle()); + return response; + } + + // Utilities with access to state of this class + + public DependencyNode collect(GAVR gavr) throws DependencyResolutionException { + var artifact = gavr.toArtifact(); + Dependency dependency = new Dependency(artifact, "runtime"); + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot(dependency); + + if (gavr.repo().isEmpty()) collectRequest.setRepositories(context.remoteRepositories()); + else { + var remoteRepository = getRemoteRepository(gavr.repo()); + // NOT addRepository() but setRepositories(), to clear any existing: + collectRequest.setRepositories(List.of(remoteRepository)); + } + + DependencyRequest dependencyRequest = new DependencyRequest(); + dependencyRequest.setCollectRequest(collectRequest); + + return context.repositorySystem() + .resolveDependencies(context.repositorySystemSession(), dependencyRequest) + .getRoot(); + } + + // Utilities that are purely static "extension" helper methods + + private static RemoteRepository getRemoteRepository(String url) { + return new RemoteRepository.Builder(url, "default", url) + .setReleasePolicy( + new RepositoryPolicy( + true, + RepositoryPolicy.UPDATE_POLICY_NEVER, + ENOLA_DEFAULT_CHECKSUM_POLICY_STRING)) + .setSnapshotPolicy( + new RepositoryPolicy( + false, + RepositoryPolicy.UPDATE_POLICY_NEVER, + ENOLA_DEFAULT_CHECKSUM_POLICY_STRING)) + .build(); + } + + public static String classpath(DependencyNode root) throws DependencyResolutionException { + PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); + root.accept(nlg); + return nlg.getClassPath(); + } + + public static Optional origin(ModelResponse modelResponse) { + var model = modelResponse.getRawModel(); + var artifactDescriptorResult = modelResponse.toArtifactDescriptorResult(model); + var repository = artifactDescriptorResult.getRepository(); + if (repository instanceof RemoteRepository remoteRepository) { + return Optional.of(URI.create(remoteRepository.getUrl())); + } + return Optional.empty(); + } + + public static String xml(Model model) { + try (var baos = new ByteArrayOutputStream()) { + String encoding = model.getModelEncoding(); + if (isNullOrEmpty(encoding)) encoding = "UTF-8"; + try (Writer out = new OutputStreamWriter(baos, encoding)) { + new MavenXpp3Writer().write(out, model); + } + return baos.toString(encoding); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } +} diff --git a/java/dev/enola/model/enola/maven/connect/mima/MimaTest.java b/java/dev/enola/model/enola/maven/connect/mima/MimaTest.java new file mode 100644 index 000000000..061ca8314 --- /dev/null +++ b/java/dev/enola/model/enola/maven/connect/mima/MimaTest.java @@ -0,0 +1,88 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2025 The Enola Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dev.enola.model.enola.maven.connect.mima; + +import static com.google.common.truth.Truth.assertThat; + +import org.eclipse.aether.RepositoryException; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.junit.Test; + +import java.io.File; +import java.net.URI; +import java.util.List; + +public class MimaTest { + + // TODO Allow explicit repo in get(), see https://github.com/maveniverse/mima/issues/166 + + // TODO interface Artifact extends Thing, set Dependencies & Parent etc. + + // TODO Improve test coverage with a local repo server - is that worth it?! + + @Test + public void mariaDB4j() throws RepositoryException { + try (var mima = new Mima()) { + var gav = GAVR.parseGradle("ch.vorburger.mariaDB4j:mariaDB4j-core:3.1.0"); + var response = mima.get(gav); + var model = response.getEffectiveModel(); + assertThat(model).isNotNull(); + + assertThat(Mima.xml(model)) + .contains("Java wrapper / launcher for MariaDB (or MySQL)"); + + var allDependencies = mima.collect(gav); + var classpath = Mima.classpath(allDependencies); + var n = classpath.chars().filter(c -> c == File.pathSeparatorChar).count(); + assertThat(n).isEqualTo(19); + + // Origin: + var central = URI.create("https://repo.maven.apache.org/maven2/"); + assertThat(Mima.origin(response)).hasValue(central); + // Do it again, to see if it still works a 2nd time, even when it's already DL: + response = mima.get(gav); + assertThat(Mima.origin(response)).hasValue(central); + } + } + + @Test + public void jitpack() throws RepositoryException { + var gav = GAVR.parseGradle("com.github.vorburger:java-multihash:ed14893c86"); + try (var mima = new Mima(List.of(Mima.JITPACK))) { + assertThat(mima.get(gav)).isNotNull(); + } + // TODO When https://github.com/maveniverse/mima/issues/166 is implemented: + // try (var mima = new Mima()) { + // assertThat(mima.get(Mima.JITPACK, gav)).isNotNull(); + // } + } + + @Test(expected = ArtifactResolutionException.class) + public void nonExistingVersion() throws RepositoryException { + try (var mima = new Mima()) { + mima.get(GAVR.parseGradle("ch.vorburger.mariaDB4j:mariaDB4j-core:1.0.0")); + } + } + + @Test(expected = IllegalArgumentException.class) + public void gavWithoutVersion() throws RepositoryException { + try (var mima = new Mima()) { + mima.get(GAVR.parseGradle("ch.vorburger.mariaDB4j:mariaDB4j-core")); + } + } +} diff --git a/java/dev/enola/model/enola/maven/connect/mima/package-info.java b/java/dev/enola/model/enola/maven/connect/mima/package-info.java new file mode 100644 index 000000000..3050a898d --- /dev/null +++ b/java/dev/enola/model/enola/maven/connect/mima/package-info.java @@ -0,0 +1,22 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2024-2025 The Enola Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@NullMarked +package dev.enola.model.enola.maven.connect.mima; + +import org.jspecify.annotations.NullMarked; diff --git a/maven_install.json b/maven_install.json index 7b94847e8..f9e48e2a1 100644 --- a/maven_install.json +++ b/maven_install.json @@ -1,7 +1,7 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": -1544684229, - "__RESOLVED_ARTIFACTS_HASH": 1594678621, + "__INPUT_ARTIFACTS_HASH": -1654877790, + "__RESOLVED_ARTIFACTS_HASH": 176115233, "conflict_resolution": { "com.fasterxml.jackson.core:jackson-databind:2.13.5": "com.fasterxml.jackson.core:jackson-databind:2.17.2" }, @@ -407,10 +407,10 @@ }, "commons-codec:commons-codec": { "shasums": { - "jar": "f700de80ac270d0344fdea7468201d8b9c805e5c648331c3619f2ee067ccfc59", - "sources": "9869277d653510f670039b77945befe71c1ca34ef2e281855bd86e6605aab4a6" + "jar": "f9f6cb103f2ddc3c99a9d80ada2ae7bf0685111fd6bffccb72033d1da4e6ff23", + "sources": "2283aff7f425dff23ebdb7a8fc0f03ae21b4ced7a43aacba47cedae126dc5d4a" }, - "version": "1.17.0" + "version": "1.17.1" }, "commons-io:commons-io": { "shasums": { @@ -426,6 +426,34 @@ }, "version": "26" }, + "eu.maveniverse.maven.mima.extensions:mmr": { + "shasums": { + "jar": "34119688b25b54a74a621dc2a8328fc9955b21189bbcd3f66ca0207f4fb4f607", + "sources": "838b9d4384f8d938156762d35f701e2f85cb9c1ef0fde855befcb5d802784d66" + }, + "version": "2.4.21" + }, + "eu.maveniverse.maven.mima.runtime:standalone-shared": { + "shasums": { + "jar": "0d7899f72c9a052576577897d9629ba50e3198906e644c6632417482e256298c", + "sources": "3c1565631534f35800767b1fa3272bdaa974146040d158a98fe7a814e85ce43f" + }, + "version": "2.4.21" + }, + "eu.maveniverse.maven.mima.runtime:standalone-static": { + "shasums": { + "jar": "04abc744c932d4843e8679de3f1df9542aa63db809baefb057372990b7b55d6c", + "sources": "e986acc43ea0f548b365121a3cc9aba1335d3614077cc3f51da9a39f6883073f" + }, + "version": "2.4.21" + }, + "eu.maveniverse.maven.mima:context": { + "shasums": { + "jar": "e518dd0ae4f3c8ec8cf8fee510c683c4d5e919baf1b2e9222361d5b3b5f771fc", + "sources": "8630f400a7af0a9590fc6786b944299a08c771afd872f22f7848beeaedc928e9" + }, + "version": "2.4.21" + }, "info.picocli:picocli": { "shasums": { "jar": "e83a906fb99b57091d1d68ac11f7c3d2518bd7a81a9c71b259e2c00d1564c8e8", @@ -769,6 +797,125 @@ }, "version": "2.24.0" }, + "org.apache.maven.resolver:maven-resolver-api": { + "shasums": { + "jar": "63f5f665e44a09ef55463b3b91fda0b78ff07dd24b1060d56e79c10b6e32cbfb", + "sources": "81f22211b99fea73c6cda74aa617477806b33850b9883722b0b26ac7934c36b7" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-connector-basic": { + "shasums": { + "jar": "4ab68bdec97eec318b2a3bd27e7c954e316f890df92d544b68afd0bf666c9588", + "sources": "ea721d5c21e6dbf776b96ebd358684d23d6d40f0098c9f2a198fef908f196cd5" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-impl": { + "shasums": { + "jar": "e4dafb8acc13d736377c02d2170d869438dd74b98b860745909d238726babcbb", + "sources": "dbc2c2c8a0a79b54a112b198a835600b0bd3a3a72b5500a9250cc32c6603f115" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-named-locks": { + "shasums": { + "jar": "0685f29ec3b548d9b6917c527f13c667685a3394b955aaa5b25d0559818b7fc5", + "sources": "a441fd2c7a0c913df6ad727e7ed419aaadacb53c0443e39ddb97b5197d51b647" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-spi": { + "shasums": { + "jar": "99ad721e4631d9bd0c4f9e29c869672577c66f2a674a5723ce38eff13c75cbfd", + "sources": "c5ec4528bbec341edcecb54477a21f5befde42899b5f5e0d99d3b264412991db" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-supplier": { + "shasums": { + "jar": "80dee51380c62318d777ef87478bbaa2b2237b993482be0174f322e1a785a9e2", + "sources": "1cccd69c133961bebf527981f9aeeffb883c839117bee477bc4df2d9b02a282d" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-transport-file": { + "shasums": { + "jar": "4f2a857d8b832494bae9ef6d7db7bb8409378b28aabd3615f03faebe42a4ad1d", + "sources": "c9ca6a5e320bdc9991b6cbfd63da342667f3f400042e79a0f4464a532beaa0fb" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-transport-http": { + "shasums": { + "jar": "1cf2a88c984e0eae8b3f13e1eec904eedead2f076d1f3c1d5cb5103a21538bd1", + "sources": "ae823fcbec14f1ba9082e81007d652f9ec695f5cf929d9a32bcd2b1ce1f9f928" + }, + "version": "1.9.22" + }, + "org.apache.maven.resolver:maven-resolver-util": { + "shasums": { + "jar": "4aaea1584c39294ca926fc474723d9684473609ef4490c4eb169d6ea7daca6b5", + "sources": "6a71eed7e9011075aec58078e23d113359df4241d7ba25e530529b85f368db5d" + }, + "version": "1.9.22" + }, + "org.apache.maven:maven-artifact": { + "shasums": { + "jar": "30f015d1c1a393e19c18cd4f43532089c36d4ca328608ce3dda78b74d3d31515", + "sources": "75dd90e3efd827f64005f314d09ee5778faee1c11c19c13922da4a4165bb46f7" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-builder-support": { + "shasums": { + "jar": "2ca4a967bdd12a9e85d40e012374f86e63d4a1030c199da4832e3d0a1c6770d8", + "sources": "00cbf78985ccf2b486850160a02856dc043321aff649e7230741b9b456985691" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-model": { + "shasums": { + "jar": "8f59b0a16fe9c933be749a60ae0705a0cb337bb5abaf38801b40b740ff775727", + "sources": "a7496f423acec6137a99baa09ad1cbc68f81f56b03685798824e1a9d2b4fd705" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-model-builder": { + "shasums": { + "jar": "a4377182ac2e5adfe16be3b3c81981a5ecddab014184de72ae1e522f04a77602", + "sources": "edd3e4816841dd96339cc4fe53154bee818083b0070f11227a164996e3c5f84a" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-repository-metadata": { + "shasums": { + "jar": "137c297e6a52d489b76663c82324d54e40f5d498a8fc015c0203fd91df8623b0", + "sources": "407f00cd460b27677fc641069b5d7a7925df9d29674d66fc12eab8428cad5403" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-resolver-provider": { + "shasums": { + "jar": "5dea05049c94f952f48ce2bfe0111afdf986acc591fcc11d23fe3b8dcb70291e", + "sources": "442fe53283444bfc1428b7743bc9bca3da4277b13c86b13c404dcd37628b4143" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-settings": { + "shasums": { + "jar": "68edf1b510e0d759ec501271a5d05e3a6e425462fbb84126c16e8a6f89abdada", + "sources": "83734d3a4292a387408802857e79cb879c03eb6cdd78467f06735949626a2d46" + }, + "version": "3.9.9" + }, + "org.apache.maven:maven-settings-builder": { + "shasums": { + "jar": "094640f3fdce47250cb06968a143f40c4e2f1c22be979c73caac2f49f3c38373", + "sources": "4b80c92f60cef56d7bf4b841eb0b43328ef41b5ade14a2dda53705babd23bf6c" + }, + "version": "3.9.9" + }, "org.apache.pdfbox:fontbox": { "shasums": { "jar": "76cf0410e903e3db714032afbb458d5a23b92253b9fdf880035f09ea8ad3adac", @@ -1091,6 +1238,34 @@ }, "version": "1.24" }, + "org.codehaus.plexus:plexus-cipher": { + "shasums": { + "jar": "9a7f1b5c5a9effd61eadfd8731452a2f76a8e79111fac391ef75ea801bea203a", + "sources": "0a98fd1e8d3e9f104f1d158946f5c063ed66af2d85127b70092003c885fe7b0c" + }, + "version": "2.0" + }, + "org.codehaus.plexus:plexus-interpolation": { + "shasums": { + "jar": "3fb4fb6143fdf964024c3cb738551524b9ea84e5c211cd660c559ad0703e5230", + "sources": "aef15feee7005390a97304e0d64457fab9e792ef0de9932c87dd3d2898fee566" + }, + "version": "1.27" + }, + "org.codehaus.plexus:plexus-sec-dispatcher": { + "shasums": { + "jar": "873139960c4c780176dda580b003a2c4bf82188bdce5bb99234e224ef7acfceb", + "sources": "ba4508f478d47717c8aeb41cf0ad9bc67e3c6bc7bf8f8bded2ca77b5885435a2" + }, + "version": "2.0" + }, + "org.codehaus.plexus:plexus-utils": { + "shasums": { + "jar": "86e0255d4c879c61b4833ed7f13124e8bb679df47debb127326e7db7dd49a07b", + "sources": "11b9ff95f1ade7cff0a45cf483c7cd84a8f8a542275a3d612779fffacdf43f00" + }, + "version": "3.5.1" + }, "org.codelibs:jhighlight": { "shasums": { "jar": "2f7d5c92db46e76a7564dd98d4d00b822d808e21b01a2c9b60e8249c41351ed1", @@ -1533,6 +1708,25 @@ "org.jetbrains.kotlin:kotlin-stdlib-common", "org.jetbrains.kotlin:kotlin-stdlib-jdk8" ], + "eu.maveniverse.maven.mima.runtime:standalone-static": [ + "eu.maveniverse.maven.mima.runtime:standalone-shared", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-supplier", + "org.apache.maven.resolver:maven-resolver-transport-file", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-resolver-provider", + "org.apache.maven:maven-settings-builder" + ], + "eu.maveniverse.maven.mima:context": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-util" + ], "io.github.amithkoujalgi:ollama4j": [ "com.fasterxml.jackson.core:jackson-databind", "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", @@ -1720,6 +1914,91 @@ "org.apache.logging.log4j:log4j-to-jul": [ "org.apache.logging.log4j:log4j-api" ], + "org.apache.maven.resolver:maven-resolver-connector-basic": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-impl": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-named-locks": [ + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-spi": [ + "org.apache.maven.resolver:maven-resolver-api" + ], + "org.apache.maven.resolver:maven-resolver-supplier": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-transport-file", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-resolver-provider", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-transport-file": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-spi", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-transport-http": [ + "commons-codec:commons-codec", + "org.apache.httpcomponents:httpclient", + "org.apache.httpcomponents:httpcore", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:jcl-over-slf4j", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-util": [ + "org.apache.maven.resolver:maven-resolver-api" + ], + "org.apache.maven:maven-artifact": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-model": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-model-builder": [ + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-model", + "org.codehaus.plexus:plexus-interpolation" + ], + "org.apache.maven:maven-repository-metadata": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-resolver-provider": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-repository-metadata", + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-settings": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-settings-builder": [ + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-settings", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-sec-dispatcher", + "org.codehaus.plexus:plexus-utils" + ], "org.apache.pdfbox:fontbox": [ "org.apache.pdfbox:pdfbox-io" ], @@ -1927,6 +2206,10 @@ "org.bouncycastle:bcutil-jdk18on": [ "org.bouncycastle:bcprov-jdk18on" ], + "org.codehaus.plexus:plexus-sec-dispatcher": [ + "org.codehaus.plexus:plexus-cipher", + "org.codehaus.plexus:plexus-utils" + ], "org.codelibs:jhighlight": [ "commons-io:commons-io" ], @@ -2530,6 +2813,20 @@ "dev.dirs:directories": [ "dev.dirs" ], + "eu.maveniverse.maven.mima.extensions:mmr": [ + "eu.maveniverse.maven.mima.extensions.mmr", + "eu.maveniverse.maven.mima.extensions.mmr.internal" + ], + "eu.maveniverse.maven.mima.runtime:standalone-shared": [ + "eu.maveniverse.maven.mima.runtime.shared" + ], + "eu.maveniverse.maven.mima.runtime:standalone-static": [ + "eu.maveniverse.maven.mima.runtime.standalonestatic" + ], + "eu.maveniverse.maven.mima:context": [ + "eu.maveniverse.maven.mima.context", + "eu.maveniverse.maven.mima.context.internal" + ], "info.picocli:picocli": [ "picocli" ], @@ -3068,6 +3365,140 @@ "org.apache.logging.log4j:log4j-to-jul": [ "org.apache.logging.log4j.tojul" ], + "org.apache.maven.resolver:maven-resolver-api": [ + "org.eclipse.aether", + "org.eclipse.aether.artifact", + "org.eclipse.aether.collection", + "org.eclipse.aether.deployment", + "org.eclipse.aether.graph", + "org.eclipse.aether.installation", + "org.eclipse.aether.metadata", + "org.eclipse.aether.repository", + "org.eclipse.aether.resolution", + "org.eclipse.aether.transfer", + "org.eclipse.aether.transform", + "org.eclipse.aether.version" + ], + "org.apache.maven.resolver:maven-resolver-connector-basic": [ + "org.eclipse.aether.connector.basic" + ], + "org.apache.maven.resolver:maven-resolver-impl": [ + "org.eclipse.aether.impl", + "org.eclipse.aether.impl.guice", + "org.eclipse.aether.internal.impl", + "org.eclipse.aether.internal.impl.checksum", + "org.eclipse.aether.internal.impl.collect", + "org.eclipse.aether.internal.impl.collect.bf", + "org.eclipse.aether.internal.impl.collect.df", + "org.eclipse.aether.internal.impl.filter", + "org.eclipse.aether.internal.impl.resolution", + "org.eclipse.aether.internal.impl.slf4j", + "org.eclipse.aether.internal.impl.synccontext", + "org.eclipse.aether.internal.impl.synccontext.legacy", + "org.eclipse.aether.internal.impl.synccontext.named", + "org.eclipse.aether.internal.impl.synccontext.named.providers" + ], + "org.apache.maven.resolver:maven-resolver-named-locks": [ + "org.eclipse.aether.named", + "org.eclipse.aether.named.providers", + "org.eclipse.aether.named.support" + ], + "org.apache.maven.resolver:maven-resolver-spi": [ + "org.eclipse.aether.spi.checksums", + "org.eclipse.aether.spi.connector", + "org.eclipse.aether.spi.connector.checksum", + "org.eclipse.aether.spi.connector.filter", + "org.eclipse.aether.spi.connector.layout", + "org.eclipse.aether.spi.connector.transport", + "org.eclipse.aether.spi.io", + "org.eclipse.aether.spi.localrepo", + "org.eclipse.aether.spi.locator", + "org.eclipse.aether.spi.log", + "org.eclipse.aether.spi.resolution", + "org.eclipse.aether.spi.synccontext" + ], + "org.apache.maven.resolver:maven-resolver-supplier": [ + "org.eclipse.aether.supplier" + ], + "org.apache.maven.resolver:maven-resolver-transport-file": [ + "org.eclipse.aether.transport.file" + ], + "org.apache.maven.resolver:maven-resolver-transport-http": [ + "org.eclipse.aether.transport.http" + ], + "org.apache.maven.resolver:maven-resolver-util": [ + "org.eclipse.aether.util", + "org.eclipse.aether.util.artifact", + "org.eclipse.aether.util.concurrency", + "org.eclipse.aether.util.filter", + "org.eclipse.aether.util.graph.manager", + "org.eclipse.aether.util.graph.selector", + "org.eclipse.aether.util.graph.transformer", + "org.eclipse.aether.util.graph.traverser", + "org.eclipse.aether.util.graph.version", + "org.eclipse.aether.util.graph.visitor", + "org.eclipse.aether.util.listener", + "org.eclipse.aether.util.repository", + "org.eclipse.aether.util.version" + ], + "org.apache.maven:maven-artifact": [ + "org.apache.maven.artifact", + "org.apache.maven.artifact.handler", + "org.apache.maven.artifact.metadata", + "org.apache.maven.artifact.repository", + "org.apache.maven.artifact.repository.layout", + "org.apache.maven.artifact.repository.metadata", + "org.apache.maven.artifact.resolver", + "org.apache.maven.artifact.resolver.filter", + "org.apache.maven.artifact.versioning", + "org.apache.maven.repository", + "org.apache.maven.repository.legacy.metadata" + ], + "org.apache.maven:maven-builder-support": [ + "org.apache.maven.building" + ], + "org.apache.maven:maven-model": [ + "org.apache.maven.model", + "org.apache.maven.model.io.xpp3", + "org.apache.maven.model.merge" + ], + "org.apache.maven:maven-model-builder": [ + "org.apache.maven.model.building", + "org.apache.maven.model.composition", + "org.apache.maven.model.inheritance", + "org.apache.maven.model.interpolation", + "org.apache.maven.model.io", + "org.apache.maven.model.locator", + "org.apache.maven.model.management", + "org.apache.maven.model.merge", + "org.apache.maven.model.normalization", + "org.apache.maven.model.path", + "org.apache.maven.model.plugin", + "org.apache.maven.model.profile", + "org.apache.maven.model.profile.activation", + "org.apache.maven.model.resolution", + "org.apache.maven.model.superpom", + "org.apache.maven.model.validation", + "org.apache.maven.utils" + ], + "org.apache.maven:maven-repository-metadata": [ + "org.apache.maven.artifact.repository.metadata", + "org.apache.maven.artifact.repository.metadata.io.xpp3" + ], + "org.apache.maven:maven-resolver-provider": [ + "org.apache.maven.repository.internal" + ], + "org.apache.maven:maven-settings": [ + "org.apache.maven.settings", + "org.apache.maven.settings.io.xpp3" + ], + "org.apache.maven:maven-settings-builder": [ + "org.apache.maven.settings.building", + "org.apache.maven.settings.crypto", + "org.apache.maven.settings.io", + "org.apache.maven.settings.merge", + "org.apache.maven.settings.validation" + ], "org.apache.pdfbox:fontbox": [ "org.apache.fontbox", "org.apache.fontbox.afm", @@ -3972,6 +4403,34 @@ "org.codehaus.mojo:animal-sniffer-annotations": [ "org.codehaus.mojo.animal_sniffer" ], + "org.codehaus.plexus:plexus-cipher": [ + "org.sonatype.plexus.components.cipher" + ], + "org.codehaus.plexus:plexus-interpolation": [ + "org.codehaus.plexus.interpolation", + "org.codehaus.plexus.interpolation.fixed", + "org.codehaus.plexus.interpolation.multi", + "org.codehaus.plexus.interpolation.object", + "org.codehaus.plexus.interpolation.os", + "org.codehaus.plexus.interpolation.reflection", + "org.codehaus.plexus.interpolation.util" + ], + "org.codehaus.plexus:plexus-sec-dispatcher": [ + "org.sonatype.plexus.components.sec.dispatcher", + "org.sonatype.plexus.components.sec.dispatcher.model", + "org.sonatype.plexus.components.sec.dispatcher.model.io.xpp3" + ], + "org.codehaus.plexus:plexus-utils": [ + "org.codehaus.plexus.util", + "org.codehaus.plexus.util.cli", + "org.codehaus.plexus.util.cli.shell", + "org.codehaus.plexus.util.dag", + "org.codehaus.plexus.util.introspection", + "org.codehaus.plexus.util.io", + "org.codehaus.plexus.util.reflection", + "org.codehaus.plexus.util.xml", + "org.codehaus.plexus.util.xml.pull" + ], "org.codelibs:jhighlight": [ "com.uwyn.jhighlight.renderer", "org.codelibs.jhighlight", @@ -4405,6 +4864,14 @@ "commons-io:commons-io:jar:sources", "dev.dirs:directories", "dev.dirs:directories:jar:sources", + "eu.maveniverse.maven.mima.extensions:mmr", + "eu.maveniverse.maven.mima.extensions:mmr:jar:sources", + "eu.maveniverse.maven.mima.runtime:standalone-shared", + "eu.maveniverse.maven.mima.runtime:standalone-shared:jar:sources", + "eu.maveniverse.maven.mima.runtime:standalone-static", + "eu.maveniverse.maven.mima.runtime:standalone-static:jar:sources", + "eu.maveniverse.maven.mima:context", + "eu.maveniverse.maven.mima:context:jar:sources", "info.picocli:picocli", "info.picocli:picocli:jar:sources", "io.github.amithkoujalgi:ollama4j", @@ -4503,6 +4970,40 @@ "org.apache.logging.log4j:log4j-api:jar:sources", "org.apache.logging.log4j:log4j-to-jul", "org.apache.logging.log4j:log4j-to-jul:jar:sources", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-api:jar:sources", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-connector-basic:jar:sources", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-impl:jar:sources", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-named-locks:jar:sources", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-spi:jar:sources", + "org.apache.maven.resolver:maven-resolver-supplier", + "org.apache.maven.resolver:maven-resolver-supplier:jar:sources", + "org.apache.maven.resolver:maven-resolver-transport-file", + "org.apache.maven.resolver:maven-resolver-transport-file:jar:sources", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-transport-http:jar:sources", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven.resolver:maven-resolver-util:jar:sources", + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-artifact:jar:sources", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-builder-support:jar:sources", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-model-builder:jar:sources", + "org.apache.maven:maven-model:jar:sources", + "org.apache.maven:maven-repository-metadata", + "org.apache.maven:maven-repository-metadata:jar:sources", + "org.apache.maven:maven-resolver-provider", + "org.apache.maven:maven-resolver-provider:jar:sources", + "org.apache.maven:maven-settings", + "org.apache.maven:maven-settings-builder", + "org.apache.maven:maven-settings-builder:jar:sources", + "org.apache.maven:maven-settings:jar:sources", "org.apache.pdfbox:fontbox", "org.apache.pdfbox:fontbox:jar:sources", "org.apache.pdfbox:jbig2-imageio", @@ -4594,6 +5095,14 @@ "org.checkerframework:checker-qual:jar:sources", "org.codehaus.mojo:animal-sniffer-annotations", "org.codehaus.mojo:animal-sniffer-annotations:jar:sources", + "org.codehaus.plexus:plexus-cipher", + "org.codehaus.plexus:plexus-cipher:jar:sources", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-interpolation:jar:sources", + "org.codehaus.plexus:plexus-sec-dispatcher", + "org.codehaus.plexus:plexus-sec-dispatcher:jar:sources", + "org.codehaus.plexus:plexus-utils", + "org.codehaus.plexus:plexus-utils:jar:sources", "org.codelibs:jhighlight", "org.codelibs:jhighlight:jar:sources", "org.eclipse.angus:angus-activation", @@ -4798,6 +5307,14 @@ "commons-io:commons-io:jar:sources", "dev.dirs:directories", "dev.dirs:directories:jar:sources", + "eu.maveniverse.maven.mima.extensions:mmr", + "eu.maveniverse.maven.mima.extensions:mmr:jar:sources", + "eu.maveniverse.maven.mima.runtime:standalone-shared", + "eu.maveniverse.maven.mima.runtime:standalone-shared:jar:sources", + "eu.maveniverse.maven.mima.runtime:standalone-static", + "eu.maveniverse.maven.mima.runtime:standalone-static:jar:sources", + "eu.maveniverse.maven.mima:context", + "eu.maveniverse.maven.mima:context:jar:sources", "info.picocli:picocli", "info.picocli:picocli:jar:sources", "io.github.amithkoujalgi:ollama4j", @@ -4896,6 +5413,40 @@ "org.apache.logging.log4j:log4j-api:jar:sources", "org.apache.logging.log4j:log4j-to-jul", "org.apache.logging.log4j:log4j-to-jul:jar:sources", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-api:jar:sources", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-connector-basic:jar:sources", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-impl:jar:sources", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-named-locks:jar:sources", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-spi:jar:sources", + "org.apache.maven.resolver:maven-resolver-supplier", + "org.apache.maven.resolver:maven-resolver-supplier:jar:sources", + "org.apache.maven.resolver:maven-resolver-transport-file", + "org.apache.maven.resolver:maven-resolver-transport-file:jar:sources", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-transport-http:jar:sources", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven.resolver:maven-resolver-util:jar:sources", + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-artifact:jar:sources", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-builder-support:jar:sources", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-model-builder:jar:sources", + "org.apache.maven:maven-model:jar:sources", + "org.apache.maven:maven-repository-metadata", + "org.apache.maven:maven-repository-metadata:jar:sources", + "org.apache.maven:maven-resolver-provider", + "org.apache.maven:maven-resolver-provider:jar:sources", + "org.apache.maven:maven-settings", + "org.apache.maven:maven-settings-builder", + "org.apache.maven:maven-settings-builder:jar:sources", + "org.apache.maven:maven-settings:jar:sources", "org.apache.pdfbox:fontbox", "org.apache.pdfbox:fontbox:jar:sources", "org.apache.pdfbox:jbig2-imageio", @@ -4987,6 +5538,14 @@ "org.checkerframework:checker-qual:jar:sources", "org.codehaus.mojo:animal-sniffer-annotations", "org.codehaus.mojo:animal-sniffer-annotations:jar:sources", + "org.codehaus.plexus:plexus-cipher", + "org.codehaus.plexus:plexus-cipher:jar:sources", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-interpolation:jar:sources", + "org.codehaus.plexus:plexus-sec-dispatcher", + "org.codehaus.plexus:plexus-sec-dispatcher:jar:sources", + "org.codehaus.plexus:plexus-utils", + "org.codehaus.plexus:plexus-utils:jar:sources", "org.codelibs:jhighlight", "org.codelibs:jhighlight:jar:sources", "org.eclipse.angus:angus-activation", @@ -5190,6 +5749,16 @@ "com.google.common.jimfs.SystemJimfsFileSystemProvider" ] }, + "eu.maveniverse.maven.mima.runtime:standalone-static": { + "eu.maveniverse.maven.mima.context.Runtime": [ + "eu.maveniverse.maven.mima.runtime.standalonestatic.StandaloneStaticRuntime" + ] + }, + "eu.maveniverse.maven.mima.runtime:standalone-static:jar:sources": { + "eu.maveniverse.maven.mima.context.Runtime": [ + "eu.maveniverse.maven.mima.runtime.standalonestatic.StandaloneStaticRuntime" + ] + }, "io.grpc:grpc-core": { "io.grpc.LoadBalancerProvider": [ "io.grpc.internal.PickFirstLoadBalancerProvider"