私は膨大な数のアーティファクトを含むIvyリポジトリを管理しており、100の奇数があるすべてのサードパーティライブラリをリストするように要求されました。ツタのリポジトリからアーティファクトのリストを取得する方法を知っている人はいますか?
質問する
110 次
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);
}
}
}
}
これはもっときれいにできると確信していますが、私は修正なしで最初に考えたものを実行しただけで、それ以上のことは考えませんでした。
于 2012-09-24T01:57:37.310 に答える
0
ビルド中に ivy を使用してこれを行う場合、レポートタスクは、使用しているすべての JAR のレポートを取得するのに役立ちます。
これらの詳細をリポジトリ マネージャーから取得しようとしている場合 (考えられるすべてのユーザーを対象としています)、@oers からの質問に答えていただけますか? 多くの場合、リポジトリ マネージャーは、格納されているアーティファクトに関するレポートを取得するために使用できる API を提供しています。
于 2012-09-24T03:27:41.593 に答える