在我的項目中有40到50個jar文件可用,每次都需要很多時間才能找到每個jar的最新版本。你可以任何一個幫我爲這個寫一個java程序?如何通過java程序找到jar的最新jar版本?
1
A
回答
3
您可能只想使用maven:http://maven.apache.org/ 或其他依賴項管理器,如Ivy。
1
At the time of ant-build please call this method
public void ExpungeDuplicates(String filePath) {
Map<String,Integer> replaceJarsMap = null;
File folder = null;
File[] listOfFiles = null;
List<String> jarList = new ArrayList<String>();
String files = "";
File deleteFile = null;
Iterator<String> mapItr = null;
//String extension ="jar";
try {
folder = new File(filePath);
listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
files = listOfFiles[i].getName();
jarList.add(files);
}
}
if (jarList.size() > 0) {
replaceJarsMap = PatternClassifier.findDuplicatesOrLowerVersion(jarList);
System.err.println("Duplicate/Lower Version - Total Count : "+replaceJarsMap.size());
mapItr = replaceJarsMap.keySet().iterator();
while (mapItr.hasNext()) {
String key = mapItr.next();
int repeat = replaceJarsMap.get(key);
System.out.println(key +" : "+repeat);
for (int i = 0; i <repeat; i++) {
deleteFile = new File(filePath + System.getProperty ("file.separator")+key);
try{
if (deleteFile != null && deleteFile.exists()){
if(deleteFile.delete()){
System.err.println(key +" deleted");
}
}
}catch (Exception e) {
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
您只需要將您的Lib的路徑給這個函數。此方法將查找所有重複或較低版本的文件。 下面給出了至關重要的功能......它從您提供的文件列表中找出重複項。
public static Map<String,Integer> findDuplicatesOrLowerVersion(List<String> fileNameList) {
List<String> oldJarList = new ArrayList<String>();
String cmprTemp[] = null;
boolean match = false;
String regex = "",regexFileType = "",verInfo1 = "",verInfo2 = "",compareName = "",tempCompareName = "",tempJarName ="";
Map<String,Integer> duplicateEntryMap = new HashMap<String, Integer>();
int count = 0;
Collections.sort(fileNameList, Collections.reverseOrder());
try{
int size = fileNameList.size();
for(int i = 0;i<size;i++){
cmprTemp = fileNameList.get(i).split("[0-9\\._]*");
for(String s : cmprTemp){
compareName += s;
}
regex = "^"+compareName+"[ajr0-9_\\-\\.]*";
regexFileType = "[0-9a-zA-Z\\-\\._]*\\.jar$";
if(fileNameList.get(i).matches(regexFileType) && !oldJarList.contains(fileNameList.get(i))){
for(int j = i+1 ;j<size;j++){
cmprTemp = fileNameList.get(j).split("[0-9\\._]*");
for(String s : cmprTemp){
tempCompareName += s;
}
match = (fileNameList.get(j).matches(regexFileType) && tempCompareName.matches(regex));
if(match){
cmprTemp = fileNameList.get(i).split("[a-zA-Z\\-\\._]*");
for(String s : cmprTemp){
verInfo1 += s;
}
verInfo1 += "000";
cmprTemp = fileNameList.get(j).split("[a-zA-Z\\-\\._]*");
for(String s : cmprTemp){
verInfo2 += s;
}
verInfo2 += "000";
int length = 0;
if(verInfo1.length()>verInfo2.length()){
length = verInfo2.length();
}else{
length = verInfo1.length();
}
if(Long.parseLong(verInfo1.substring(0,length))>=Long.parseLong(verInfo2.substring(0,length))){
count = 0;
if(!oldJarList.contains(fileNameList.get(j))){
oldJarList.add(fileNameList.get(j));
duplicateEntryMap.put(fileNameList.get(j),++count);
}else{
count = duplicateEntryMap.get(fileNameList.get(j));
duplicateEntryMap.put(fileNameList.get(j),++count);
}
}else{
tempJarName = fileNameList.get(i);
}
match = false;verInfo1 = "";verInfo2 = "";
}
tempCompareName = "";
}
if(tempJarName!=null && !tempJarName.equals("")){
count = 0;
if(!oldJarList.contains(fileNameList.get(i))){
oldJarList.add(fileNameList.get(i));
duplicateEntryMap.put(fileNameList.get(i),++count);
}else{
count = dupl icateEntryMap.get(fileNameList.get(i));
duplicateEntryMap.put(fileNameList.get(i),++count);
}
tempJarName = "";
}
}
compareName = "";
}
}catch (Exception e) {
e.printStackTrace();
}
return duplicateEntryMap;
}
什麼findDuplicatesOrLowerVersion(名單fileNameList)函數的任務 - 只要它發現的重複和passting一個映射,其中包含的文件和時間數低版本重複的名字。
Try this. The remaining file exist in the folder should be latest or files with out duplicates.Am using this for finding the oldest files.on the basis of that it will find the old and delete it.
This am only checking the name..Futher improvement you can made.
Where PatternClassifier is a class which contains the second method given here.
相關問題
- 1. 通過Java程序提交Hadoop Jar
- 2. 通過Jenkins的Maven Project jar版本
- 3. 如何使用舊版本的Java 1.6運行.jar 1.7程序?
- 4. 如何確保最新版本的JAR與JNLP應用程序一起使用?
- 5. Java:分離JAR版本
- 6. 如何讓intellij導入我的jar的最新版本?
- 7. 通過遠程訪問未找到java web start jar文件
- 8. 如何測試.jar版本?
- 9. bndtools:如何獲取jar文件或插件的最新版本
- 10. 如何獲取Sonatype Nexus下載最新版本的jar?
- 11. JAR到JAR通信
- 12. zmq jar版本
- 13. java通過cronjob運行jar
- 14. 通過Jenkins運行Java Jar
- 15. 版本更高到Spring2.0.6.jar
- 16. 檢查最新版本的程序(Java)
- 17. 如何將Java程序轉換爲jar?
- 18. 所有Java版本的Jar文件?
- 19. 如何讓'hadoop jar'命令獲取同一個命名的jar的新版本
- 20. 如何跳過由maven-jar-plugin和clasifier生成的jar中的版本
- 21. 如果應用程序中存在多個JAR版本如何找到Jvm正在使用哪一個版本
- 22. 通過C++程序修改.JAR文件?
- 23. 如何找到jar文件
- 24. JAR版本控制
- 25. Ant + Ivy Jar版本
- 26. ant應用程序的內置版本無法找到依賴的jar
- 27. 通過在豬中使用的java jar調用程序
- 28. Jar內的Java Jar
- 29. 從JAR文件中找出Solace版本
- 30. 將java應用程序導出到.jar
我會用Maven來管理你的依賴關係。 –