Java tutorial
package org.ranji.longan.skeleton; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.net.URL; import org.apache.commons.io.FileUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * @author RanJi */ public class ParentSkeleton { /** * ? * @param projectName ????com.company.projectname? * @param targetDir ?? */ public static void createParentSkeleton(String projectName, String targetDir) { //-- 1. ?? if (projectName == null || "".equals(projectName) || targetDir == null || "".equals(targetDir)) return; String[] s = projectName.trim().split("\\."); if (s == null || s.length != 3) return; //-- 2. targetDir,? File parentDir = new File(targetDir); File projectDir = new File(parentDir, s[2]); projectDir.mkdirs(); //-- 3. .config? createConfigFile(projectName, projectDir); //-- 4. .gitignore createGitIgnoreFile(projectDir); //-- 5. LICENSE.txt createLicenseFile(projectDir); //-- 6. README.md createReadMeFile(projectDir); //-- 7. pom.xml createPomXmlFile(projectName, s[2], projectDir); } /** * ?.config * @param projectName ?? * @param targetDir */ private static void createConfigFile(String projectName, File projectDir) { File f = new File(projectDir, ".config"); try { //-- ??projectname=xxx.xxx.xxx FileUtils.writeStringToFile(f, "projectname=" + projectName.trim()); } catch (IOException e) { e.printStackTrace(); } } /** * ?.gitignore * @param projectDir */ private static void createGitIgnoreFile(File projectDir) { File gitignoreFile = new File(projectDir, ".gitignore"); createFileByTemplate("parent/gitignore.rj", gitignoreFile); } private static void createLicenseFile(File projectDir) { File licenseFile = new File(projectDir, "LICENSE.txt"); createFileByTemplate("parent/license.rj", licenseFile); } private static void createReadMeFile(File projectDir) { File readmeFile = new File(projectDir, "README.md"); createFileByTemplate("parent/readme.rj", readmeFile); } private static void createPomXmlFile(String projectName, String projectSimpleName, File projectDir) { File pomFile = new File(projectDir, "pom.xml"); URL url = ParentSkeleton.class.getClassLoader().getResource("parent/pom.rj"); SAXReader reader = new SAXReader(); try { Document doc = reader.read(url); Element rootElm = doc.getRootElement(); //-- 1. groupId Element groupIdElm = rootElm.element("groupId"); groupIdElm.setText(projectName.trim()); //-- 2. artifactId Element artifactIdElm = rootElm.element("artifactId"); artifactIdElm.setText(projectSimpleName); //-- 3. name Element nameElm = rootElm.element("name"); nameElm.setText(projectSimpleName); //-- 4. ? OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); try { XMLWriter writer = new XMLWriter(new FileWriter(pomFile), format); writer.write(doc); writer.close(); } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } } /** * ??() * @param templateFilePath ??? * @param destFilePath */ private static void createFileByTemplate(String templateFilePath, File destFile) { URL url = ParentSkeleton.class.getClassLoader().getResource(templateFilePath); try { FileUtils.copyURLToFile(url, destFile); } catch (IOException e) { e.printStackTrace(); } } }