@Test
  public void set_maven_options() {
    installSomeMaven(jenkins);

    MavenModuleSet job = jenkins.jobs.create(MavenModuleSet.class);
    job.configure();
    job.copyDir(resource("/maven_plugin/multimodule/"));
    job.goals.set("clean");
    job.options("-verbose");
    job.save();

    job.startBuild().waitUntilFinished().shouldContainsConsoleOutput("\\[Loaded java.lang.Object");
  }
  @Test
  public void use_local_maven_repo() {
    installSomeMaven(jenkins);

    FreeStyleJob job = jenkins.jobs.create();
    job.configure();
    MavenBuildStep step = job.addBuildStep(MavenBuildStep.class);
    step.targets.set(GENERATE);
    step.useLocalRepository();
    job.save();

    job.startBuild()
        .shouldSucceed()
        .shouldContainsConsoleOutput("-Dmaven.repo.local=([^\\n]*)/.repository");
  }
  @Test
  public void set_global_maven_options() {
    installSomeMaven(jenkins);

    jenkins.configure();
    new MavenProjectConfig(jenkins.getConfigPage()).opts.set("-verbose");
    jenkins.save();

    MavenModuleSet job = jenkins.jobs.create(MavenModuleSet.class);
    job.configure();
    job.copyDir(resource("/maven_plugin/multimodule/"));
    job.goals.set("clean");
    job.save();

    job.startBuild().shouldSucceed().shouldContainsConsoleOutput("\\[Loaded java.lang.Object");
  }
  @Test
  public void build_multimodule() {
    installSomeMaven(jenkins);

    MavenModuleSet job = jenkins.jobs.create(MavenModuleSet.class);
    job.configure();
    job.copyDir(resource("/maven_plugin/multimodule/"));
    job.goals.set("package");
    job.save();

    job.startBuild()
        .shouldSucceed()
        .shouldContainsConsoleOutput("Building root 1.0")
        .shouldContainsConsoleOutput("Building module_a 2.0")
        .shouldContainsConsoleOutput("Building module_b 3.0");

    assertHasModule(job, "gid$root");
    assertHasModule(job, "gid$module_a");
    assertHasModule(job, "gid$module_b");
  }
  @Test
  @Bug("JENKINS-10539")
  @Since("1.527")
  public void preserve_backslash_in_property() {
    installSomeMaven(jenkins);

    FreeStyleJob job = jenkins.jobs.create(FreeStyleJob.class);
    job.configure();
    job.addParameter(StringParameter.class).setName("CMD");
    job.addParameter(StringParameter.class).setName("PROPERTY");

    MavenBuildStep step = job.addBuildStep(MavenBuildStep.class);
    step.targets.set(GENERATE + " -Dcmdline.property=$CMD");
    step.properties("property.property=$PROPERTY");
    job.save();

    Map<String, String> params = new HashMap<>();
    params.put("CMD", "\"C:\\\\System\"");
    params.put("PROPERTY", "C:\\Windows");
    job.startBuild(params)
        .shouldSucceed()
        .shouldContainsConsoleOutput("cmdline.property=C:\\\\System")
        .shouldContainsConsoleOutput("property.property=C:\\\\Windows");
  }