java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java mave命令下载jar

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

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

您可能感兴趣的文章:
阅读全文