diff --git a/src/main/java/ch/ivyteam/ivy/maven/compile/ValidateProjectMojo.java b/src/main/java/ch/ivyteam/ivy/maven/compile/ValidateProjectMojo.java index 941a06b9..24fe0dbb 100644 --- a/src/main/java/ch/ivyteam/ivy/maven/compile/ValidateProjectMojo.java +++ b/src/main/java/ch/ivyteam/ivy/maven/compile/ValidateProjectMojo.java @@ -1,8 +1,12 @@ package ch.ivyteam.ivy.maven.compile; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Path; import java.util.List; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.DependencyResolutionRequiredException; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugins.annotations.Mojo; @@ -97,7 +101,11 @@ private ContextBuilder(MavenProject project, MavenSession session) { } private ProjectValidatorContext build() { - return ProjectValidatorContext.create().project(toProject()).allProjects(toAllProjects()).toContext(); + return ProjectValidatorContext.create() + .project(toProject()) + .allProjects(toAllProjects()) + .classLoader(toClassLoader()) + .toContext(); } private Project toProject() { @@ -141,5 +149,23 @@ private List toAllProjects() { .map(BasicProjectBuilder::build) .toList(); } + + private ClassLoader toClassLoader() { + try { + var classpath = project.getCompileClasspathElements(); + var urls = classpath.stream() + .map(path -> { + try { + return Path.of(path).toUri().toURL(); + } catch (Exception e) { + throw new RuntimeException(e); + } + }) + .toArray(URL[]::new); + return new URLClassLoader(urls, null); + } catch (DependencyResolutionRequiredException ex) { + throw new RuntimeException(ex); + } + } } }