[FIXED JENKINS-19976] Enable plugins to load classes from optionally depending plugins even without restarting after depended ones installed.
[JENKINS-19976] Tests for the behavior of loading a depended plugin dynamically.
[JENKINS-19976] Added tests how dynamic load works for @Extension.
[JENKINS-19976] Added plugins to test dynamic loading.
Merge branch 'feature/JENKINS-19976_TestForInstallDepended' into feature/JENKINS-19976_LoadClassFromNewInstalledPlugin
[JENKINS-19976] Fixed confusing comments.
[FIXED JENKINS-19976] Merged #1054: fix class loading from dynamically installed optional dependencies.
[JENKINS-19976] Touch-ups to PR #1054.
testEnterCredential observed to fail due to offline mirror.
Since downloading tool metadata seems inessential for the test, leaving it disabled as is the default.
503 Service Unavailable for http://mirrors.jenkins-ci.org/updates/updates/hudson.tasks.Ant.AntInstaller.json?id=hudson.tasks.Ant.AntInstaller&version=1.557-SNAPSHOT%2520(private-03%252F24%252F2014%252014%253A15%2520GMT-jenkins)
Cannot call setResult during finalization phase.
From a random failure of BuildTriggerTest.testMavenBuildTrigger:
java.lang.AssertionError
	at hudson.model.Run.setResult(Run.java:425)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:722)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.cleanUp(MavenModuleSetBuild.java:1054)
	at hudson.model.Run.execute(Run.java:1733)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Null safety during failing tests (BuildTriggerTest.testMavenBuildTrigger in this case).
java.lang.NullPointerException
	at hudson.model.Job.getBuildDir(Job.java:790)
	at hudson.model.Run.getRootDir(Run.java:993)
	at hudson.model.Run.getLogFile(Run.java:1306)
	at hudson.model.Run.execute(Run.java:1664)
	at hudson.maven.MavenBuild.access$900(MavenBuild.java:94)
	at hudson.maven.MavenBuild$ProxyImpl2.close(MavenBuild.java:636)
	at hudson.maven.AbstractMavenBuilder.end(AbstractMavenBuilder.java:106)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:839)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:523)
	at hudson.model.Run.execute(Run.java:1688)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
java.lang.NullPointerException
	at hudson.model.BuildStepListener.all(BuildStepListener.java:31)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:739)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.cleanUp(MavenModuleSetBuild.java:1054)
	at hudson.model.Run.execute(Run.java:1733)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
[JENKINS-22326] Calling into foreign code from a toString method, like Queue.Item.getWhy → QueueTaskDispatcher, is unsafe.
@RandomlyFails