2012-09-21 233 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

構建時間報告對我來說並不那麼有用。 –