diff --git a/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java index cbab812..355261c 100644 --- a/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java +++ b/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java @@ -254,6 +254,10 @@ protected Manifest doGetManifest( DependencyResolverResult result; if (config.isAddClasspath() || config.isAddExtensions()) { + if (session == null) { + throw new IllegalArgumentException("Session is required when addClasspath or addExtensions is enabled. " + + "Use getManifest(Session, Project, ManifestConfiguration) instead."); + } result = session.getService(DependencyResolver.class).resolve(session, project, PathScope.MAIN_RUNTIME); } else { result = null; diff --git a/src/test/java/org/apache/maven/shared/archiver/MavenArchiverTest.java b/src/test/java/org/apache/maven/shared/archiver/MavenArchiverTest.java index e27b76e..da237d4 100644 --- a/src/test/java/org/apache/maven/shared/archiver/MavenArchiverTest.java +++ b/src/test/java/org/apache/maven/shared/archiver/MavenArchiverTest.java @@ -96,6 +96,18 @@ void setup() { when(dependencyResolverResult.getDependencies()).thenReturn(dependencies); } + @Test + void getManifestWithoutSessionWhenAddClasspath() { + MavenArchiver archiver = new MavenArchiver(); + Project project = getDummyProject(); + ManifestConfiguration config = new ManifestConfiguration(); + config.setAddClasspath(true); + + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> archiver.getManifest(project, config)) + .withMessageContaining("Session"); + } + @ParameterizedTest @EmptySource @ValueSource(