Tiny示例:对整个目录中的POM树进行批量处理

简介:

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

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

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

实现方案1:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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<XmlNode> 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,再换一种写法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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<XmlNode> 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格式化并输出到文件中,也可以写成:

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



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


相关文章
|
7月前
|
Java 测试技术 应用服务中间件
使用Maven构建一个项目时,通常按照以下六个步骤的顺序进行
使用Maven构建一个项目时,通常按照以下六个步骤的顺序进行
156 0
|
存储 缓存 Java
《Gradle构建脚本的基本结构和语法》
《Gradle构建脚本的基本结构和语法》
144 0
|
2月前
|
PyTorch TensorFlow API
大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式
本文讨论了大模型中不同文件格式如`.safetensors`、`.ckpt`、`.gguf`、`.pth`和`.bin`的区别、用途以及如何在TensorFlow、PyTorch和ONNX等框架之间进行加载、保存和转换。
681 2
|
7月前
POM文件总体配置说明
POM文件总体配置说明
115 0
|
7月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
84 0
|
存储
问题 A: DS树--带权路径和
问题 A: DS树--带权路径和
ENVI_IDL:(批量处理)如何对HDF5文件进行GLT文件的创建并进行几何校正最终输出为IMG格式?
ENVI_IDL:(批量处理)如何对HDF5文件进行GLT文件的创建并进行几何校正最终输出为IMG格式?
193 0
|
移动开发 编解码 资源调度
分集与路径合并方式
分集与路径合并方式
202 0
分集与路径合并方式
C#编程学习13:文件及文件夹检索与拷贝
C#编程学习13:文件及文件夹检索与拷贝
|
JSON Shell 测试技术
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名,绑定数据到结构体等等
204 0
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等