对于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中相关推荐

  1. Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mv ...

  2. 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 ...

  3. mvn将本地jar文件导入本地maven库中

    进入lib目录,执行mvn命令导入: mvn install:install-file -Dfile=top-sdk-java-0.0.1-SNAPSHOT.jar -DgroupId=com.all ...

  4. 简单几步让你实现本地jar包引入到maven当中

    2021/8/14{2021/8/14}2021/8/14 本文目录 1.为什么要了解该操作流程 2.操作流程 1.为什么要了解该操作流程 众所周知,有的jar包不能通过maven从远程仓库直接下载引 ...

  5. Maven私库使用常见问题:本地安装三方Jar文件

    这篇文章通过Oracle的ojdbc的Jar依赖的对应方法来说明Maven私库中三方Jar文件的一种对应方法. 现象 以oracle的ojdbc的jar为例进行说明 [ERROR] Failed to ...

  6. hadoop 依赖式job_Hadoop Job使用第三方依赖jar文件

    当我们实现了一个Hadoop MapReduce Job以后,而这个Job可能又依赖很多外部的jar文件,在Hadoop集群上运行时,有时会出现找不到具体Class的异常.出现这种问题,基本上就是在H ...

  7. How to include custom library into maven local repository?--转

    原文地址:https://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/ There ...

  8. Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等...

    一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz  arg1 arg ...

  9. Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等

    一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz  arg1 arg ...

最新文章

  1. 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统
  2. visual studio C语言指针提示:使用未初始化的内存xx
  3. dagger2记录篇
  4. 关于WSAEWOULDBLOCK和WSA_IO_PENDING错误
  5. python怎么画圆并改变线条颜色_基于logi的matplotlib中线条颜色的改变
  6. python 读取当前文件夹下所有后缀为.lib文件
  7. 电气技术应用和计算机应用,电气技术应用专业介绍-1.ppt
  8. 认识计算机硬件实验项目,实验1 认识计算机的硬件与硬件组装
  9. Java中的资源文件加载方式
  10. 完美程序员的10种品质
  11. 怎么给iOS项目打包
  12. 设计模式之Prototype(原型)
  13. iOS开发全套资源,从入门到全栈IOS工程师
  14. 2022-2028年中国无线模组行业投资策略探讨及市场规模预测报告
  15. 查找Linux系统中某个软件是否安装/存在
  16. supervisor备忘
  17. 视频配音怎么制作?这两个文字转语音工具,声音自然好听
  18. mhl数据线_利用MHL数据线 手机同屏到乐视电视X50air上
  19. wifi网络为什么总是断线 (by quqi99)
  20. “自然”语言编程(NLC)的到来比你想象的要快

热门文章

  1. 对于一些敏感的数据(例如密码),为什么使用字符数组存储比使用String更安全?
  2. el-table click事件多次触发_JavaScript从零开始——DOM事件编程(1)
  3. 使用物理硬盘_许迎果 第147期 机械硬盘的物理结构和逻辑结构
  4. Oracle 隐含参数的查询
  5. 讨论:多核CPU+ASIC的防火墙在以后是发展方向吗?
  6. 树莓派Linux内核编译选项如何开启TPM 2.0
  7. GeoTools——读取shapefile数据
  8. 轻松解决idea一直卡在Resolving Maven dependencies的问题
  9. 使用ZeroBrane Studio调试OpenResty Lua脚本
  10. Window环境下使用C#调用VBScript、JavaScript等脚本