@TaskAction public void doTask() throws IOException, ParserConfigurationException, TransformerException { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); // root element Document doc = docBuilder.newDocument(); Element root = addXml( doc, "launchConfiguration", ImmutableMap.of("type", "org.eclipse.jdt.launching.localJavaApplication")); addXml( root, "stringAttribute", ImmutableMap.of("key", "org.eclipse.jdt.launching.MAIN_TYPE", "value", getMainClass())); addXml( root, "stringAttribute", ImmutableMap.of( "key", "org.eclipse.jdt.launching.PROJECT_ATTR", "value", getProjectName())); addXml( root, "stringAttribute", ImmutableMap.of( "key", "org.eclipse.jdt.launching.WORKING_DIRECTORY", "value", getRunDir())); if (!Strings.isNullOrEmpty(getArguments())) { addXml( root, "stringAttribute", ImmutableMap.of( "key", "org.eclipse.jdt.launching.PROGRAM_ARGUMENTS", "value", getArguments())); } if (!Strings.isNullOrEmpty(getJvmArguments())) { addXml( root, "stringAttribute", ImmutableMap.of( "key", "org.eclipse.jdt.launching.VM_ARGUMENTS", "value", getJvmArguments())); } File outFile = getOutputFile(); outFile.getParentFile().mkdirs(); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(getOutputFile()); transformer.transform(source, result); // make the rundir new File(getRunDir()).mkdirs(); }