コード例 #1
0
  private void generateBuildSystem() throws MojoExecutionException {
    try {
      packageDirectory.mkdirs();
      new File(packageDirectory, "m4").mkdirs();
      targetSrcDir = new File(packageDirectory, "src");
      targetSrcDir.mkdirs();

      if (customPackageDirectory != null && customPackageDirectory.isDirectory()) {
        FileUtils.copyDirectoryStructureIfModified(customPackageDirectory, packageDirectory);
      }

      if (generatedNativeSourceDirectory != null && generatedNativeSourceDirectory.isDirectory()) {
        FileUtils.copyDirectoryStructureIfModified(generatedNativeSourceDirectory, targetSrcDir);
      }

      copyTemplateResource("readme.md", false);
      copyTemplateResource("configure.ac", true);
      copyTemplateResource("Makefile.am", true);
      copyTemplateResource("m4/custom.m4", false);
      copyTemplateResource("m4/jni.m4", false);
      copyTemplateResource("m4/osx-universal.m4", false);

      // To support windows based builds..
      String tool = windowsBuildTool.toLowerCase().trim();
      if ("detect".equals(tool)) {
        copyTemplateResource("vs2008.vcproj", true);
        copyTemplateResource("vs2010.vcxproj", true);
      } else if ("msbuild".equals(tool)) {
        copyTemplateResource("vs2010.vcxproj", true);
      } else if ("vcbuild".equals(tool)) {
        copyTemplateResource("vs2008.vcproj", true);
      } else if ("none".equals(tool)) {
      } else {
        throw new MojoExecutionException(
            "Invalid setting for windowsBuildTool: " + windowsBuildTool);
      }

      File autogen = new File(packageDirectory, "autogen.sh");
      File configure = new File(packageDirectory, "configure");
      if (!autogen.exists()) {
        copyTemplateResource("autogen.sh", false);
        cli.setExecutable(autogen);
      }
      if (!skipAutogen) {
        if ((!configure.exists() && !CLI.IS_WINDOWS) || forceAutogen) {
          try {
            cli.system(packageDirectory, new String[] {"./autogen.sh"}, autogenArgs);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }

    } catch (Exception e) {
      throw new MojoExecutionException("Native build system generation failed: " + e, e);
    }
  }