diff --git a/pom.xml b/pom.xml index b4a53b7e..7a1d52d8 100644 --- a/pom.xml +++ b/pom.xml @@ -93,6 +93,7 @@ org.jenkins-ci.main maven-plugin 3.16 + true commons-io diff --git a/src/main/java/hudson/plugins/s3/S3CopyArtifact.java b/src/main/java/hudson/plugins/s3/S3CopyArtifact.java index 5a498846..a9e823e0 100644 --- a/src/main/java/hudson/plugins/s3/S3CopyArtifact.java +++ b/src/main/java/hudson/plugins/s3/S3CopyArtifact.java @@ -161,6 +161,11 @@ private void setResult(@Nonnull Run run, boolean isOk) { else run.setResult(Result.FAILURE); } + + private static boolean isMavenPluginInstalled() { + Jenkins instance = Jenkins.getInstanceOrNull(); + return instance != null && instance.getPlugin("maven-plugin") != null; + } @Override public void perform(@Nonnull Run dst, @Nonnull FilePath targetDir, @Nonnull Launcher launcher, @Nonnull TaskListener listener) throws InterruptedException, IOException { @@ -217,7 +222,7 @@ public void perform(@Nonnull Run dst, @Nonnull FilePath targetDir, @Nonnul excludeFilter = env.expand(excludeFilter); - if (src instanceof MavenModuleSetBuild) { + if (isMavenPluginInstalled() && src instanceof MavenModuleSetBuild) { // Copy artifacts from the build (ArchiveArtifacts build step) boolean ok = perform(src, dst, includeFilter, excludeFilter, targetDir, console); @@ -335,12 +340,13 @@ public FormValidation doCheckProjectName( final FormValidation result; final Item item = new JobResolver(value).job; if (item != null) { - - result = item instanceof MavenModuleSet - ? FormValidation.warning(Messages.CopyArtifact_MavenProject()) - : (item instanceof MatrixProject - ? FormValidation.warning(Messages.CopyArtifact_MatrixProject()) - : FormValidation.ok()); + if (isMavenPluginInstalled() && item instanceof MavenModuleSet) { + result = FormValidation.warning(Messages.CopyArtifact_MavenProject()); + } else { + result = (item instanceof MatrixProject) + ? FormValidation.warning(Messages.CopyArtifact_MatrixProject()) + : FormValidation.ok(); + } } else if (value.indexOf('$') >= 0) { result = FormValidation.warning(Messages.CopyArtifact_ParameterizedName());