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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- 基于Java的打包jar、war、ear包的作用与区别详解
- 解决java项目jar打包后读取文件失败的问题
- 关于Idea创建Java项目并引入lombok包的问题(lombok.jar包免费下载)
- Java 使用反射调用jar包中的类方式
- Java(TM) Platform SE binary 打开jar文件的操作
- Java运行Jar包内存配置的操作
- idea打包java可执行jar包的实现步骤
- windows下java -jar 后台运行以及杀死后台进程的操作
- windows定时器配置执行java jar文件的方法详解
- java使用jar包生成二维码的示例代码
- Java使用JSONObject需要的6个jar包下载地址
- Java jar打包工具使用方法步骤解析
- java 一键部署 jar 包和 war 包
相关文章
SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表
本文主要介绍了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03SpringBoot+SpringBatch+Quartz整合定时批量任务方式
这篇文章主要介绍了SpringBoot+SpringBatch+Quartz整合定时批量任务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09Java HttpClient执行请求时配置cookie流程详细讲解
这篇文章主要介绍了Java HttpClient执行请求时配置cookie流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-02-02
最新评论