diff --git a/core/src/main/java/hudson/PluginWrapper.java b/core/src/main/java/hudson/PluginWrapper.java index 71cdf14096..38b5368a1c 100644 --- a/core/src/main/java/hudson/PluginWrapper.java +++ b/core/src/main/java/hudson/PluginWrapper.java @@ -408,6 +408,21 @@ public class PluginWrapper implements Comparable, ModelObject { return "???"; } + /** + * Returns the required Jenkins core version of this plugin. + * @return the required Jenkins core version of this plugin. + * @since XXX + */ + @Exported + public @CheckForNull String getRequiredCoreVersion() { + String v = manifest.getMainAttributes().getValue("Jenkins-Version"); + if (v!= null) return v; + + v = manifest.getMainAttributes().getValue("Hudson-Version"); + if (v!= null) return v; + return null; + } + /** * Returns the version number of this plugin */ @@ -534,6 +549,14 @@ public class PluginWrapper implements Comparable, ModelObject { * thrown if one or several mandatory dependencies doesn't exists. */ /*package*/ void resolvePluginDependencies() throws IOException { + String requiredCoreVersion = getRequiredCoreVersion(); + if (requiredCoreVersion == null) { + throw new IOException(shortName + " doesn't declare required core version."); + } else { + if (Jenkins.getVersion().isOlderThan(new VersionNumber(requiredCoreVersion))) { + throw new IOException(shortName + " requires a more recent core version (" + requiredCoreVersion + ") than the current (" + Jenkins.getVersion() + ")."); + } + } List missingDependencies = new ArrayList(); List obsoleteDependencies = new ArrayList(); List disabledDependencies = new ArrayList();