jar包批量上传到nexus私服
近期有个项目大量需要一些jar包,在私服上找不到,用java+mvn命令批量将jar包上传到私服
上传需要 GAV坐标和jar路径(最后是绝对路径)
java代码做处理参数,然后调取bat命令,执行mvn命令
jar包命名格式通常为A-V[-classfiler].jar
public class tt {
public static void main(String[] args) throws IOException {
BufferedReader br = null;
//jar包统一放在这个目录下面
File file=new File("D:\\lib");
String tef="F:\\test\\test.bat";
File[] fs = file.listFiles();
for (File f : fs) {
if(f.isFile()){
String path=f.getAbsolutePath();
String _artifactId = f.getName().substring(0,f.getName().lastIndexOf("-"));
String _version=f.getName().substring(f.getName().lastIndexOf("-")+1, f.getName().lastIndexOf("."));
//
String[] cmds={tef,path,_artifactId,_version};
//processBuilder用法可自行百度,这里用为打开cmd执行命令
ProcessBuilder pb = new ProcessBuilder(cmds);
pb.redirectErrorStream(true);
Process p;
p = pb.start();
String result = "";
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((result = br.readLine()) != null) {
if(result.trim().endsWith(" KB") || result.trim().endsWith(" B")){
continue;
}
System.out.println(result);
}
br.close();
p.destroy();
pb.directory();
}
}
}
processBuild处理也可以用下面这个类(已封装)
//mvnScript为执行的mvn命令
public static void uploadXmlByMvn(String mvnScript){
boolean isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows");
try {
ProcessBuilder builder = new ProcessBuilder();
if (isWindows) {
builder.command("cmd.exe", "/c", mvnScript);
} else {
builder.command("sh", "-c", mvnScript);
}
builder.directory(new File(System.getProperty("user.home")));
Process process = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String result = "";
while ((result = br.readLine()) != null) {
System.out.println(result);
}
}catch (Exception e) {
e.printStackTrace();
}
}
最后执行的bat命令如下,第一个代码调取时会传四个参数过来,会将第一个bat路径作为第一个参数,所以这里不取,参数从第二个开始(%~1),下面的一个参数 仓库id可以打开私服找到如下图所示处
echo off
set _FILEPATH=%~1
set _artifactId=%~2
set _VERSION=%~3
mvn deploy:deploy-file -Dfile=%_FILEPATH% -DgroupId=com.yss -DartifactId=%_artifactId% -Dversion=%_VERSION% -Dpackaging=jar -DrepositoryId=仓库id -Durl=仓库地址
这里没有指定maven配置文件setting.xml文件,会默认选择mavan的setting.xml,如需自行设置,可以 -s 配置文件名
在settings.xml文件中需要配置,私服的账号密码。