Restore ModelCacheFactory

This commit is contained in:
Guillaume Nodet
2024-11-07 19:10:14 +01:00
parent 31c765e0d4
commit f191c652f5
4 changed files with 27 additions and 15 deletions

View File

@@ -33,6 +33,7 @@
<properties>
<!-- If using release, sun.misc is not reachable (see SignalHelper) -->
<!-- <maven.compiler.release />-->
<maven.compiler.proc>full</maven.compiler.proc>
</properties>
<dependencies>
@@ -60,6 +61,10 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-cli</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-di</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-interactivity-api</artifactId>

View File

@@ -21,8 +21,8 @@ package org.apache.maven.project;
import java.util.Objects;
import java.util.function.Supplier;
import org.apache.maven.building.Source;
import org.apache.maven.model.building.ModelCache;
import org.apache.maven.api.services.Source;
import org.apache.maven.api.services.model.ModelCache;
public class SnapshotModelCache implements ModelCache {
@@ -44,6 +44,11 @@ public class SnapshotModelCache implements ModelCache {
return reactorCache.computeIfAbsent(path, tag, data);
}
@Override
public void clear() {
reactorCache.clear();
}
private ModelCache getDelegate(String version) {
return version.contains("SNAPSHOT") || version.contains("${") ? reactorCache : globalCache;
}

View File

@@ -18,16 +18,13 @@
*/
package org.apache.maven.project;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import org.apache.maven.model.building.ModelCache;
import org.apache.maven.repository.internal.DefaultModelCacheFactory;
import org.apache.maven.repository.internal.ModelCacheFactory;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.sisu.Priority;
import org.apache.maven.api.di.Inject;
import org.apache.maven.api.di.Named;
import org.apache.maven.api.di.Priority;
import org.apache.maven.api.di.Singleton;
import org.apache.maven.api.services.model.ModelCache;
import org.apache.maven.api.services.model.ModelCacheFactory;
import org.apache.maven.internal.impl.model.DefaultModelCacheFactory;
import static org.mvndaemon.mvnd.common.Environment.MVND_NO_MODEL_CACHE;
@@ -42,14 +39,14 @@ public class SnapshotModelCacheFactory implements ModelCacheFactory {
@Inject
public SnapshotModelCacheFactory(DefaultModelCacheFactory factory) {
this.factory = factory;
this.globalCache = factory.createCache(new DefaultRepositorySystemSession());
this.globalCache = factory.newInstance();
}
@Override
public ModelCache createCache(RepositorySystemSession session) {
public ModelCache newInstance() {
boolean noModelCache =
Boolean.parseBoolean(MVND_NO_MODEL_CACHE.asOptional().orElse(MVND_NO_MODEL_CACHE.getDefault()));
ModelCache reactorCache = factory.createCache(session);
ModelCache reactorCache = factory.newInstance();
ModelCache globalCache = noModelCache ? reactorCache : this.globalCache;
return new SnapshotModelCache(globalCache, reactorCache);
}

View File

@@ -178,6 +178,11 @@
<artifactId>maven-cli</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-api-di</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-jline</artifactId>