读取 jar 包 GAV 信息

0 条评论

批量将 jar 包上传(命令)到 nexus 仓库时需要指定 jar 包的 GAV 信息,如果手动指定信息则工作量太大,而且 jar 包的文件命名也不规范,不能从文件名上提取信息。好在大部分的 jar 包使用的 maven 工具打包,包内包含有 META-INF/**/pom.properties 文件,该文件记录了制品包的 GAV 信息,例如:

#Generated by Maven
#Tue Jun 12 18:19:43 EDT 2012
version=2.4
groupId=commons-io
artifactId=commons-io

所以就想写一个工具可以从 jar 包内读取该文件,从而自动获得 jar 包的 GAV 信息,如果通过脚本来遍历 jar 包,然后自动调用工具获取GAV信息,接着使用 mvn 命令上传 jar 包,就可以将大部分的上传工作自动化处理了。正好使用 golang 练习:

  1. package main
  2. import "fmt"
  3. import "io/ioutil"
  4. import "os"
  5. import "strings"
  6. import "archive/zip"
  7. func main() {
  8.     if len(os.Args) < 2 {
  9.         fmt.Println("Param missing")
  10.         os.Exit(1)
  11.     }
  12.     jarFile := os.Args[1]
  13.     r, err := zip.OpenReader(jarFile)
  14.     if err != nil {
  15.         fmt.Println(err)
  16.         os.Exit(1)
  17.     }
  18.     defer r.Close()
  19.     for _, f := range r.File {
  20.         if strings.HasSuffix(f.Name, "pom.properties") {
  21.             fr,err := f.Open()
  22.             if err != nil {
  23.                 fmt.Println(err)
  24.                 os.Exit(1)
  25.             }
  26.             defer fr.Close()
  27.             content, err := ioutil.ReadAll(fr)
  28.             if err != nil {
  29.                 fmt.Println(err)
  30.                 os.Exit(1)
  31.             }
  32.             fmt.Print(string(content))
  33.             os.Exit(0)
  34.         }
  35.     }
  36.     fmt.Println("Can not find pom.properties")
  37.     os.Exit(1)
  38. }

相关日志 Relate Posts

收藏与分享 : Twitter | Facebook | 微博 | 人人 | Google+ | PDF

发表留言(Ctrl+Enter提交)