Java 通过mave命令下载jar
程序员文章站
2022-05-04 07:52:10
之前一直都是使用的idea,创建maven工程进行jar包导入操作,居然接到了通过java 代码导入jar包的需求,满脸的懵逼,好在功夫不负有心人,最终将其拿来了,现在这里记录一下,方便以后学习使用; 本次采用的方案是基于pom.xml模板的形式+maven命令的方式,到仓库下载jar报错,示例代码如下: 项目依赖: commons-io ......
之前一直都是使用的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"); }
好啦,暂时就先记录在这里,后面有机会在完善
本文地址:https://blog.csdn.net/dagecao/article/details/109641543
上一篇: Spring Boot 打包与热部署
下一篇: 本地线程变量:ThreadLocal
推荐阅读
-
jar运行命令(讲解java部署jar还是war优劣)
-
java实现切割wav音频文件的方法详解【附外部jar包下载】
-
jar运行命令(讲解java部署jar还是war优劣)
-
通过Java实现bash命令过程解析
-
Java 通过mave命令下载jar
-
Spring Boot 的java -jar命令启动原理详解
-
Gradle 发布共享库——如何通过Gradle发布java依赖库(jar)到 jitpack 公共仓库(—)
-
java根据本地jar包l,生成pom配置文件,及将本地jar包上传私服命令
-
Java程序中不通过hadoop jar的方式访问hdfs
-
【JVM】Java 通过 javap 命令分析java汇编指令