当前位置 : 主页 > 编程语言 > java >

Java 通过mave命令下载jar包的示例代码

来源:互联网 收集:自由互联 发布时间:2021-04-03
之前一直都是使用的idea,创建maven工程进行jar包导入操作,居然接到了通过java 代码导入jar包的需求,满脸的懵逼,好在功夫不负有心人,最终将其拿来了, 现在这里记录一下,方便以后

之前一直都是使用的idea,创建maven工程进行jar包导入操作,居然接到了通过java 代码导入jar包的需求,满脸的懵逼,好在功夫不负有心人,最终将其拿来了,

现在这里记录一下,方便以后学习使用;

本次采用的方案是基于pom.xml模板的形式+maven命令的方式,到仓库下载jar报错,示例代码如下:

项目依赖:

<dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.6</version>
</dependency>

pom.xml模板:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <inceptionYear>2019</inceptionYear>
 <groupId>com.tx.app</groupId>
 <artifactId>autoapi</artifactId>
 <packaging>jar</packaging>
 <version>1.0</version>
 <name>autoapi</name>
 
 
 <parent>
  <groupId>com.tx</groupId>
  <artifactId>parent-pom</artifactId>
  <version>1.0.2</version>
 </parent>
 
 <repositories>
  <repository>
   <id>autoapi</id>
   <url>远端仓库地址</url>
  </repository>
 </repositories>
 
 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
     <artifactItems>
      <artifactItem>
       <groupId>{0}</groupId>
       <artifactId>{1}</artifactId>
       <version>{2}</version>
      </artifactItem>
     </artifactItems>
    </configuration>
   </plugin>
  </plugins>
 </build>
</project>

代码示例:

public class MavenParse {
 private static String mavenPath = "/maven/apache-maven-3.6.3/bin/mvn";
 
 private static final String MVN_PARAM = " dependency:copy -DoutputDirectory=lib -U";
 
 void downloadDependency(DependencyDTO dependencyDTO, String jarName) throws Exception {
  // 准备下载命令
  String mavenCommandPath =
   System.getProperty("os.name").toLowerCase().startsWith("win") ? "mvn" : mavenPath;
  String mvnCmd = mavenCommandPath + MVN_PARAM;
 
  // 创建下载jar包存储的位置
  File workDir = getMavenRepository(jarName);
  // 基于模板创建pom.xml
  File pomFile = new File(workDir, "pom.xml");
  String pomXml = createPomModel(dependencyDTO);
  FileUtils.writeStringToFile(pomFile, pomXml, "utf-8");
  Process process = Runtime.getRuntime().exec(mvnCmd, null, workDir);
  // 验证下载成功
  if(null == process || process.waitFor()!= 0){
   FileUtils.deleteQuietly(workDir);
   throw new Exception("下载maven包失败,请检查maven配置");
  }
 }
 
 private String createPomModel(DependencyDTO dependencyDTO) throws IOException {
 
  File pomFile = new File(getClass().getResource("/pom.xml").getFile());
  String template = FileUtils.readFileToString(pomFile, "utf-8");
  return MessageFormat.format(template,
   dependencyDTO.getGroupId(),
   dependencyDTO.getArtifactId(),
   dependencyDTO.getVersion());
 
 }
 
 /**
  * 创建jar包存储的文件夹
  * @param fileName
  * @return
  * @throws Exception
  */
 private static File getMavenRepository(String fileName)throws Exception {
 
  String parentPath = System.getProperty("user.dir")+File.separator+"automation";
  parentPath = parentPath+File.separator+"mavenParse";
  parentPath = parentPath+File.separator+FilenameUtils.getBaseName(fileName);
 
  File dir = new File(parentPath);
  try {
   FileUtils.forceMkdir(dir);
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
  return dir;
 }
}

测试代码:

public static void main(String[] args) throws Exception {
 String dependency = "<dependency>\n"
  + "   <groupId>commons-io</groupId>\n"
  + "   <artifactId>commons-io</artifactId>\n"
  + "   <version>2.6</version>\n"
  + "  </dependency>";


 DependencyDTO dependencyDTO = new DependencyDTO();

 dependencyDTO.setGroupId("commons-io");
 dependencyDTO.setArtifactId("commons-io");
 dependencyDTO.setVersion("2.6");
 dependencyDTO.setPomContent(dependency);

 MavenParse parse = new MavenParse();

 parse.downloadDependency(dependencyDTO,"commons-io.jar");
}

好啦,暂时就先记录在这里,后面有机会在完善

到此这篇关于Java 通过mave命令下载jar的示例代码的文章就介绍到这了,更多相关java mave命令下载jar内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

网友评论