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

 更新时间:2020年11月17日 10:19:07   作者:dagecao  
这篇文章主要介绍了Java 通过mave命令下载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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    本文主要介绍了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java Executor 框架的实例详解

    Java Executor 框架的实例详解

    这篇文章主要介绍了Java Executor 框架的实例详解的相关资料,这里提供实例来帮助大家学习理解这部分内容,需要的朋友可以参考下
    2017-09-09
  • SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    这篇文章主要介绍了SpringBoot+SpringBatch+Quartz整合定时批量任务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java使用正则表达式(regex)匹配中文实例代码

    Java使用正则表达式(regex)匹配中文实例代码

    本文给大家分享java使用正则表达式匹配中文的实例代码,以及java中要匹配中文的正则表达式两种写法,感兴趣的朋友通过本文一起看看吧
    2016-12-12
  • Java多线程通信实现方式详解

    Java多线程通信实现方式详解

    这篇文章主要介绍了Java多线程通信实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 教你如何用Java根据日期生成流水号

    教你如何用Java根据日期生成流水号

    这篇文章主要介绍了教你如何用Java根据日期生成流水号,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • java实现时钟效果

    java实现时钟效果

    这篇文章主要为大家详细介绍了java实现时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Java怎样创建集合才能避免造成内存泄漏你了解吗

    Java怎样创建集合才能避免造成内存泄漏你了解吗

    内存泄漏是指无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是因为长生命周期持有它的引用而导致不能被回收
    2021-09-09
  • Java HttpClient执行请求时配置cookie流程详细讲解

    Java HttpClient执行请求时配置cookie流程详细讲解

    这篇文章主要介绍了Java HttpClient执行请求时配置cookie流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • java中设计模式之适配器模式

    java中设计模式之适配器模式

    这篇文章主要介绍了java中设计模式之适配器模式的相关资料,适配器模式将一个类的接口转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作得亲密无间,需要的朋友可以参考下
    2017-09-09

最新评论