2012-09-21 192 views
0

获取文物的名单我管理的常春藤库与文物丰富的号码,我已要求列出哪些我们有一个百余所有第三方图书馆的。有没有人知道一种方法来从常春藤回购检索工件列表?在常春藤Repositoty

+0

哪个存储库软件? – oers

+0

Sonatype Nexus™开源版,版本:1.9.2 –

回答

0

我没有找到这样的方式做到这一点,我写在Java脚本得到的结果,想我可能会分享答案,如果人们希望在将来,它也格式化被直接复制到一个Excel文档。

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Iterator; 
import java.util.List; 


public class ListArtifacts { 

    public static void main(String[] args) { 
     Collection<File> all = new ArrayList<File>(); 
     addTree(new File("."), all); 
     String delimeter = "\\."; 
     List<String> remove = new ArrayList<String>(); 
     List<String> everything = new ArrayList<String>(); 
     remove.add("pom"); 
     remove.add("jar"); 
     remove.add("xml"); 
     remove.add("txt"); 
     remove.add("sha1"); 
     remove.add("md5"); 
     remove.add("metadata"); 
     remove.add("tar"); 
     remove.add("gz"); 
     remove.add("zip"); 
     remove.add("rar"); 


     FileWriter fWriter = null; 
     BufferedWriter writer = null; 
     try { 
      fWriter = new FileWriter("info.txt"); 
      writer = new BufferedWriter(fWriter); 

      Iterator itr = all.iterator(); 
      while (itr.hasNext() == true){ 
       String[] split; 
       String temp = itr.next().toString(); 
       split = temp.split(delimeter); 
       int i = 0; 
       int j = 0; 
       boolean flag = false; 
       while (i < split.length){ 
        while (j < remove.size()){ 
         if (split[i].equals(remove.get(j))){ 
          flag = true; 
         } 
         j++; 
        } 
        j = 0; 
        i++; 
       }  
       if (flag == false){ 
        String output = ""; 
        int k=0; 
        boolean flag2 = false; 
        boolean hasVersion = false; 
        while (k < split.length){ 
         if (flag2 == true){ 
          output += "."; 
          flag2 = false; 
         }      
         output = output + split[k].toString(); 

         boolean lastInt = false; 
         try{ 
         String last = split[k].substring(split[k].length() - 1); 
         if (isInteger(last) == true) 
          lastInt = true; 
         }catch(Exception e){} 

         if ((isInteger(split[k].toString()) == true) || (lastInt == true)){ 
          flag2 = true; 
          hasVersion = true; 
         } 
         k++; 
        } 
        if (hasVersion == true){ 
         everything.add(output.substring(1)); 
         writer.append(output.substring(1)); 
         writer.newLine(); 
        } 
       } 
      } 
      int i = 0; 
      String delim = "\\\\"; 
      String finalOutput = ""; 
      String toSplit = ""; 
      while (i < everything.size()){ 
       toSplit = everything.get(i); 
       String[] split2 = toSplit.split(delim); 
       finalOutput = split2[0] + "\t"; 
       int j = 1; 
       while (j < split2.length-2){ 
        finalOutput += split2[j] + "."; 
        j++; 
       } 
       finalOutput += split2[split2.length-2] + "\t"; 
       finalOutput += split2[split2.length-1]; 
       writer.append(finalOutput); 
       writer.newLine(); 
       i++; 
      } 

      writer.close(); 
     } catch (Exception e) { 
     } 

     System.out.println(all); 
    } 

    public static boolean isInteger(String input) 
    { 
     try 
     { 
      Integer.parseInt(input); 
      return true; 
     } 
     catch(Exception e) 
     { 
      return false; 
     } 
    } 

    static void addTree(File file, Collection<File> all) { 
     File[] children = file.listFiles(); 
     if (children != null) { 
      for (File child : children) { 
       all.add(child); 
       addTree(child, all); 
      } 
     } 
    } 
} 

确定这可以做得更干净,但我没有更高的想法,只是做了我没有修改的第一件事。

+0

这是在存储库中的cmd行上运行,并生成工件/版本列表到txt文档。 –

0

如果您正在寻找在构建过程中做到这一点使用常春藤,该report任务应该可以帮助你得到你所使用的所有JAR文件的报告。

如果你想获取从仓库管理器(涵盖所有可能的用户)这些细节,你能回答@oers问题?版本库管理员经常提供一些API,您可以使用它来获取有关它们存储的工件的报告。

+0

构建时间报告对我来说并不那么有用。 –