public PmSession(Configuration config, boolean interactive, UniverseSpec builtin) throws Exception {
this.config = config;
this.mavenListener = new MavenListener();
this.maven = new CliMavenArtifactRepositoryManager(config.getMavenConfig(),
mavenListener);
UniverseResolver universeResolver = UniverseResolver.builder().addArtifactResolver(maven).build();
universe = new UniverseManager(this, config, maven, universeResolver, builtin);
this.interactive = interactive;
cacheManager = new FeaturePackCacheManager(config.getLayoutCache(), policy);
if (interactive) {
layoutFactory = ProvisioningLayoutFactory.getInstance(universeResolver, cacheManager);
} else {
layoutFactory = ProvisioningLayoutFactory.getInstance(universeResolver);
}
resolver = new ResourceResolver(this);
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
close();
}));
}