in winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/PourMojo.java [85:119]
public void execute() throws MojoExecutionException {
final Thread thread = Thread.currentThread();
final ClassLoader loader = thread.getContextClassLoader();
final ClassLoader appLoader = createClassLoader(loader);
thread.setContextClassLoader(appLoader);
try {
final Consumer<Runnable> waitOnExit = defaultImpl -> {
if (waitOnSystemIn) {
defaultImpl.run();
} else { // just block
try {
new CountDownLatch(1).await();
} catch (final InterruptedException e) {
Thread.currentThread()
.interrupt();
}
}
};
final Class<?> runClass = appLoader.loadClass("org.apache.winegrower.extension.build.common.Run");
final Class<?> confClass = appLoader.loadClass("org.apache.winegrower.Ripener$Configuration");
Runnable.class.cast(runClass.getConstructor(confClass, Map.class, Consumer.class)
.newInstance(createConfiguration(confClass), systemVariables, waitOnExit)).run();
} catch (final Exception e) {
throw new MojoExecutionException(e.getMessage(), e);
} finally {
if (appLoader != loader) {
try {
URLClassLoader.class.cast(appLoader).close();
} catch (final IOException e) {
getLog().warn(e.getMessage(), e);
}
}
thread.setContextClassLoader(loader);
}
}