将jar文件加到Maven的local repository中
对于Maven项目来说,日常使用的多数第三方java库文件都可以从Maven的Central Repository中自动下载,但是如果我们需要的jar文件不在Central Repository中,那么我们就需要手动将自己下载的jar文件加入到Maven的local reposotory中了,此时我们需要向Maven提供用于识别jar文件(可能多个)的groupId, artifactId和version等信息。
我并不打算讲怎么将一个下载的jar库加入到local repository中,我们将自己建立一个jar库,比如我们有一个最简单的HelloWorld类HelloWorld.java:
package com.thoughtworks.davenkin; public class HelloWorld{ public void sayHello() { System.out.println("Hello, World"); }}
我们希望将HelloWorld.java打包成jar文件安装在Maven的local repository中以便其它程序使用。
编译打包hello-world.jar后,为了符合Maven的规定,需要给hello-world.jar一个版本号,故将hello-world.jar改名为hello-world-1.0.jar,此后便可以用mvn来安装此包到Maven的local repository中了:
mvn install:install-file -Dfile=path/to/hello-world-1.0.jar -DgroupId=com.thoughtworks.davenkin -DartifactId=hello-world -Dversion=1.0 -Dpackaging=jar
其中,-Dfile选项应给出需要安装jar文件的路径,在Linux/Mac下,jar文件将被安装在以下目录:
~/.m2/repository/com/thoughtworks/davenkin/hello-world/1.0/hello-world-1.0.jar
现在,我们的hello-world-1.0.jar便可以被其它Maven项目所使用了,为此创建一个Maven工程:
mvn archetype:generate-DgroupId=com.thoughtworks.davenkin.demo -DartifactId=helloworld-demo -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0
此时将在当前目录下自动创建helloworld-demo子目录,切换到helloworld-demo目录,删除已有的App.java,并创建自己的Main.java文件
rm src/main/java/com/thoughtworks/davenkin/demo/App.java
touch src/main/java/com/thoughtworks/davenkin/demo/Main.java
将以下内容加入到Main.java文件中:
package com.thoughtworks.davenkin.demo; import com.thoughtworks.davenkin.HelloWorld; public class Main { public static void main(String[] args) { new HelloWorld().sayHello(); }}
接下来是最重要的一步,修改pom.xml文件以加入对HelloWorld类的依赖:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.thoughtworks.davenkin.demo</groupId> <artifactId>demo</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>demo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.thoughtworks.davenkin</groupId> <artifactId>hello-world</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> </dependencies></project>
以上高亮部分为我们手动加入的,Maven会根据artifactId和version拼出所依赖jar包的名字,即artifactId-version.jar,对于我们的例子,artifactId为hello-world,version为1.0,所得到的jar文件为hello-world-1.0.jar,这也是为什么我们在一开始时需要将hello-world.jar的名字改为hello-world-1.0.jar的原因。
接下来便可以编译我们的Main.java了:
mvn compile
编译结果会放在target文件夹下。
到现在,我们的例子便可以运行了,在工程根目录下(该例为hello-world-demo)输入以下命令:
mvn exec:java -Dexec.mainClass="com.thoughtworks.davenkin.demo.Main"
在笔者的机器上输出为:
[INFO] Scanning for projects...[INFO] [INFO] ------------------------------------------------------------------------[INFO] Building demo 1.0[INFO] ------------------------------------------------------------------------[INFO] [INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ demo >>>[INFO] [INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ demo <<<[INFO] [INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ demo ---Hello, World[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.423s[INFO] Finished at: Wed Feb 15 21:33:47 CST 2012[INFO] Final Memory: 5M/81M[INFO] ------------------------------------------------------------------------
以上高亮部分即为我们期望的程序输出,当然你也可以用传统的java命令来运行,此时需要将hello-world-1.0.jar加入到classpath中,输入:
java -cp ~/.m2/repository/com/thoughtworks/davenkin/hello-world/1.0/hello-world-1.0.jar:target/classes/ com.thoughtworks.davenkin.demo.Main
输出为:
Hello, World
转载于:https://www.cnblogs.com/wuchanming/p/5418741.html
将jar文件加到Maven的local repository中相关推荐
- Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mv ...
- pom.xml中出现错误提示Failure to transfer org.jboss.weld.jar ... maven2 was cached in the local repository.
pom.xml中出现 以下错误提示: Failure to transfer org.jboss.weld:weld-core:jar:1.0.1-SP3 from https://repo.mave ...
- mvn将本地jar文件导入本地maven库中
进入lib目录,执行mvn命令导入: mvn install:install-file -Dfile=top-sdk-java-0.0.1-SNAPSHOT.jar -DgroupId=com.all ...
- 简单几步让你实现本地jar包引入到maven当中
2021/8/14{2021/8/14}2021/8/14 本文目录 1.为什么要了解该操作流程 2.操作流程 1.为什么要了解该操作流程 众所周知,有的jar包不能通过maven从远程仓库直接下载引 ...
- Maven私库使用常见问题:本地安装三方Jar文件
这篇文章通过Oracle的ojdbc的Jar依赖的对应方法来说明Maven私库中三方Jar文件的一种对应方法. 现象 以oracle的ojdbc的jar为例进行说明 [ERROR] Failed to ...
- hadoop 依赖式job_Hadoop Job使用第三方依赖jar文件
当我们实现了一个Hadoop MapReduce Job以后,而这个Job可能又依赖很多外部的jar文件,在Hadoop集群上运行时,有时会出现找不到具体Class的异常.出现这种问题,基本上就是在H ...
- How to include custom library into maven local repository?--转
原文地址:https://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/ There ...
- Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等...
一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz arg1 arg ...
- Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等
一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz arg1 arg ...
最新文章
- 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统
- visual studio C语言指针提示:使用未初始化的内存xx
- dagger2记录篇
- 关于WSAEWOULDBLOCK和WSA_IO_PENDING错误
- python怎么画圆并改变线条颜色_基于logi的matplotlib中线条颜色的改变
- python 读取当前文件夹下所有后缀为.lib文件
- 电气技术应用和计算机应用,电气技术应用专业介绍-1.ppt
- 认识计算机硬件实验项目,实验1 认识计算机的硬件与硬件组装
- Java中的资源文件加载方式
- 完美程序员的10种品质
- 怎么给iOS项目打包
- 设计模式之Prototype(原型)
- iOS开发全套资源,从入门到全栈IOS工程师
- 2022-2028年中国无线模组行业投资策略探讨及市场规模预测报告
- 查找Linux系统中某个软件是否安装/存在
- supervisor备忘
- 视频配音怎么制作?这两个文字转语音工具,声音自然好听
- mhl数据线_利用MHL数据线 手机同屏到乐视电视X50air上
- wifi网络为什么总是断线 (by quqi99)
- “自然”语言编程(NLC)的到来比你想象的要快
热门文章
- 对于一些敏感的数据(例如密码),为什么使用字符数组存储比使用String更安全?
- el-table click事件多次触发_JavaScript从零开始——DOM事件编程(1)
- 使用物理硬盘_许迎果 第147期 机械硬盘的物理结构和逻辑结构
- Oracle 隐含参数的查询
- 讨论:多核CPU+ASIC的防火墙在以后是发展方向吗?
- 树莓派Linux内核编译选项如何开启TPM 2.0
- GeoTools——读取shapefile数据
- 轻松解决idea一直卡在Resolving Maven dependencies的问题
- 使用ZeroBrane Studio调试OpenResty Lua脚本
- Window环境下使用C#调用VBScript、JavaScript等脚本