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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决JSTL foEach标签 刷新报错的方法

    解决JSTL foEach标签 刷新报错的方法

    本篇文章是对JSTL foEach标签刷新报错的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Java之System.getProperty()的作用及使用说明

    Java之System.getProperty()的作用及使用说明

    这篇文章主要介绍了Java之System.getProperty()的作用及使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • SpringCloud可视化链路追踪系统Zipkin部署过程

    SpringCloud可视化链路追踪系统Zipkin部署过程

    这篇文章主要介绍了SpringCloud可视化链路追踪系统Zipkin部署过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java NIO实现聊天室功能

    Java NIO实现聊天室功能

    这篇文章主要为大家详细介绍了Java NIO实现聊天室功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Maven使用方法详及方式详细介绍

    Maven使用方法详及方式详细介绍

    使用maven仓库的话需要从网上下载maven的包,比如“apache-maven-3.5.4-bin.tar”,下载完成之后解压,在解压的文件夹中的conf目录下的settings.xml文件夹下就可以配置maven远程仓库和本地仓库的地址
    2022-11-11
  • Java咖啡馆(1)——叹咖啡

    Java咖啡馆(1)——叹咖啡

    这篇文章主要给大家介绍了关于Java咖啡馆之叹咖啡,需要的朋友可以参考下
    2006-12-12
  • 解决ThreadLocal获取不到值大坑

    解决ThreadLocal获取不到值大坑

    这篇文章主要介绍了解决ThreadLocal获取不到值大坑
    2023-05-05
  • Java中的Comparable和Comparator接口

    Java中的Comparable和Comparator接口

    这篇文章主要介绍了Java中的Comparable和Comparator接口,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java中StringBuilder与StringBuffer的区别

    Java中StringBuilder与StringBuffer的区别

    在Java编程中,字符串的拼接是一项常见的操作。为了有效地处理字符串的拼接需求,Java提供了两个主要的类:StringBuilder和StringBuffer,本文主要介绍了Java中StringBuilder与StringBuffer的区别,感兴趣的可以了解一下
    2023-08-08
  • MyBatis-Plus通用CRUD操作的实现

    MyBatis-Plus通用CRUD操作的实现

    MyBatis-Plus是基于MyBatis的增强工具,主要目的是简化MyBatis的使用并提升开发效率,它提供了通可以用CRUD操作、分页插件、多种插件支持、自动代码生成器等功能,感兴趣的可以了解一下
    2024-10-10

最新评论