博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tiny示例:对整个目录中的POM树进行批量处理
阅读量:6142 次
发布时间:2019-06-21

本文共 4035 字,大约阅读时间需要 13 分钟。

hot3.png

原来我的POM中groupId是org.tinygroup,artifactId是对应的工程名,如parser。

后出有一个处理上的原因,而且便于进行分隔,还可以避免与别人的冲突,想把所有的artifactId前面增加个“org.tinygroup.”前缀,比如parser就变成org.tinygroup.parser。但是这样一来,所有的依赖信息也全都对不上了,也就是要对工程的artifactId及依赖中的artifactId都进行修改才行。

由于工程数比较多,一个一个手工改总是麻烦的,因此就想着写程序进行处理。

实现方案1:

public class ChangePom {    public static void main(String[] args) throws Throwable {        File file1 = new File("D:\\SVN\\tinyorg-code\\trunk\\Sources\\");        processFolder(file1);    }    private static void processFolder(File file1) throws Exception {        File[] files = file1.listFiles();        for (File file : files) {            if (file.isDirectory()) {                processFolder(file);            }            if (file.getName().equals("pom.xml")) {                processPomFile(file);            }        }    }    private static void processPomFile(File file) throws Exception {        System.out.println("processing:" + file.getAbsolutePath());        XmlStringParser parser = new XmlStringParser();        XmlDocument doc = parser.parse(IOUtils.readFromInputStream(new FileInputStream(file), "utf-8"));        XmlNode dependencies = doc.getRoot().getSubNode("dependencies");        XmlNode projectArtifactId = doc.getRoot().getSubNode("artifactId");        projectArtifactId.setContent("org.tinygroup" + projectArtifactId.getContent().trim());        if (dependencies != null) {            List
dependencyList = dependencies.getSubNodes("dependency"); if (dependencyList != null) { for (XmlNode node : dependencyList) { XmlNode groupId = node.getSubNode("groupId"); if (groupId.getContent().trim().equals("org.tinygroup")) { XmlNode artifactId = node.getSubNode("artifactId"); artifactId.setContent("org.tinygroup." + artifactId.getContent().trim()); } } } } XmlFormater formater = new XmlFormater(); IOUtils.writeToOutputStream(new FileOutputStream(file), formater.format(doc), "UTF-8"); }}

呵呵,程序运行一会,马上搞定了。

当然,这个时候,可能感觉还是有点麻烦,OK,再换一种写法:

public class ChangePom1 {    public static void main(String[] args) throws Throwable {        FileObject fileObject= VFS.resolveFile("D:\\SVN\\tinyorg-code\\trunk\\Sources\\");        fileObject.foreach(new FileNameFileObjectFilter("pom\\.xml"),new FileObjectProcessor() {            public void process(FileObject fileObject) throws Exception {                System.out.println("processing:" + fileObject.getAbsolutePath());                XmlStringParser parser = new XmlStringParser();                XmlDocument doc = parser.parse(IOUtils.readFromInputStream(fileObject.getInputStream(), "utf-8"));                XmlNode dependencies = doc.getRoot().getSubNode("dependencies");                XmlNode projectArtifactId = doc.getRoot().getSubNode("artifactId");                projectArtifactId.setContent("org.tinygroup" + projectArtifactId.getContent().trim());                if (dependencies != null) {                    List
dependencyList = dependencies.getSubNodes("dependency"); if (dependencyList != null) { for (XmlNode node : dependencyList) { XmlNode groupId = node.getSubNode("groupId"); if (groupId.getContent().trim().equals("org.tinygroup")) { XmlNode artifactId = node.getSubNode("artifactId"); artifactId.setContent("org.tinygroup." + artifactId.getContent().trim()); } } } } XmlFormater formater = new XmlFormater(); IOUtils.writeToOutputStream(fileObject.getOutputStream(), formater.format(doc), "UTF-8"); } }); }}

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

formater.format(doc,fileObject.getOutputStream();

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

转载于:https://my.oschina.net/tinyframework/blog/203954

你可能感兴趣的文章
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
登记申请汇总
查看>>