zoukankan      html  css  js  c++  java
  • Tiny示例:对整个目录中的POM树进行批量处理

    原来我的POM中groupId是org.tinygroup,artifactId是对应的工程名,如parser。
    后出有一个处理上的原因,而且便于进行分隔,还可以避免与别人的冲突,想把所有的artifactId前面增加个“org.tinygroup.”前缀,比如parser就变成org.tinygroup.parser。但是这样一来,所有的依赖信息也全都对不上了,也就是要对工程的artifactId及依赖中的artifactId都进行修改才行。
    由于工程数比较多,一个一个手工改总是麻烦的,因此就想着写程序进行处理。
    实现方案1:

    1. public class ChangePom {
    2.     public static void main(String[] args) throws Throwable {
    3.         File file1 = new File("D:\SVN\tinyorg-code\trunk\Sources\");
    4.         processFolder(file1);
    5.     }
    6.     private static void processFolder(File file1) throws Exception {
    7.         File[] files = file1.listFiles();
    8.         for (File file : files) {
    9.             if (file.isDirectory()) {
    10.                 processFolder(file);
    11.             }
    12.             if (file.getName().equals("pom.xml")) {
    13.                 processPomFile(file);
    14.             }
    15.         }
    16.     }
    17.     private static void processPomFile(File file) throws Exception {
    18.         System.out.println("processing:" + file.getAbsolutePath());
    19.         XmlStringParser parser = new XmlStringParser();
    20.         XmlDocument doc = parser.parse(IOUtils.readFromInputStream(new FileInputStream(file), "utf-8"));
    21.         XmlNode dependencies = doc.getRoot().getSubNode("dependencies");
    22.         XmlNode projectArtifactId = doc.getRoot().getSubNode("artifactId");
    23.         projectArtifactId.setContent("org.tinygroup" + projectArtifactId.getContent().trim());
    24.         if (dependencies != null) {
    25.             List<XmlNode> dependencyList = dependencies.getSubNodes("dependency");
    26.             if (dependencyList != null) {
    27.                 for (XmlNode node : dependencyList) {
    28.                     XmlNode groupId = node.getSubNode("groupId");
    29.                     if (groupId.getContent().trim().equals("org.tinygroup")) {
    30.                         XmlNode artifactId = node.getSubNode("artifactId");
    31.                         artifactId.setContent("org.tinygroup." + artifactId.getContent().trim());
    32.                     }
    33.                 }
    34.             }
    35.         }
    36.         XmlFormater formater = new XmlFormater();
    37.         IOUtils.writeToOutputStream(new FileOutputStream(file), formater.format(doc), "UTF-8");
    38.     }
    39. }
    复制代码

    呵呵,程序运行一会,马上搞定了。
    当然,这个时候,可能感觉还是有点麻烦,OK,再换一种写法:

    1. public class ChangePom1 {
    2.     public static void main(String[] args) throws Throwable {
    3.         FileObject fileObject= VFS.resolveFile("D:\SVN\tinyorg-code\trunk\Sources\");
    4.         fileObject.foreach(new FileNameFileObjectFilter("pom\.xml"),new FileObjectProcessor() {
    5.             public void process(FileObject fileObject) throws Exception {
    6.                 System.out.println("processing:" + fileObject.getAbsolutePath());
    7.                 XmlStringParser parser = new XmlStringParser();
    8.                 XmlDocument doc = parser.parse(IOUtils.readFromInputStream(fileObject.getInputStream(), "utf-8"));
    9.                 XmlNode dependencies = doc.getRoot().getSubNode("dependencies");
    10.                 XmlNode projectArtifactId = doc.getRoot().getSubNode("artifactId");
    11.                 projectArtifactId.setContent("org.tinygroup" + projectArtifactId.getContent().trim());
    12.                 if (dependencies != null) {
    13.                     List<XmlNode> dependencyList = dependencies.getSubNodes("dependency");
    14.                     if (dependencyList != null) {
    15.                         for (XmlNode node : dependencyList) {
    16.                             XmlNode groupId = node.getSubNode("groupId");
    17.                             if (groupId.getContent().trim().equals("org.tinygroup")) {
    18.                                 XmlNode artifactId = node.getSubNode("artifactId");
    19.                                 artifactId.setContent("org.tinygroup." + artifactId.getContent().trim());
    20.                             }
    21.                         }
    22.                     }
    23.                 }
    24.                 XmlFormater formater = new XmlFormater();
    25.                 IOUtils.writeToOutputStream(fileObject.getOutputStream(), formater.format(doc), "UTF-8");
    26.             }
    27.         });
    28.     }
    29. }
    复制代码

    下面的xml格式化并输出到文件中,也可以写成:

    1. formater.format(doc,fileObject.getOutputStream();
    复制代码

    当然,上面只是临时进行一下处理,中间的Xml处理写得稍微丑陋一点。

  • 相关阅读:
    验证码学习笔记
    字符串String类
    密封关键字sealed
    比较两个对象是否为同一个对象
    Unity让带有Rigidbody组件的游戏对象停止运动
    Unity3d-制作粒子光环特效
    Unity3d实现的十字路口的模拟(三)
    kinect v2
    Unity3D 之射线检测
    FFmpeg X264的preset和tune
  • 原文地址:https://www.cnblogs.com/j2eetop/p/4612648.html
Copyright © 2011-2022 走看看