在我的项目中有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来管理你的依赖关系。 –