关于mavenrepository的信息

http://www.itjxue.com  2023-01-26 10:29  来源:未知  点击次数: 

怎么从 maven 的 repository 中删除自己安装的 jar 包

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类的依赖:

" xmlns:xsi=""

xsi:schemaLocation=" "

4.0.0

com.thoughtworks.davenkin.demo

demo

1.0

jar

demo

build.sourceEncodingUTF-8build.sourceEncoding

junit

junit

3.8.1

test

com.thoughtworks.davenkin

hello-world

1.0

compile

以上高亮部分为我们手动加入的,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

如何修改MAVEN本地仓库的存储位置

eclipse中安装好maven2的插件后:

第一步:

默认会放在~/.m2/repository目录下 (“~”代表用户的目录,比如windows7下一般都是C:\Users\zz\.m2\repository),

但是一般不想放在C盘下,所以换个仓库位置(E:/mavenrepository)。

第二步:

修改配置文件,将下载的maven2中conf文件夹下的settings.xml复制到C:\Users\zz\.m2\repository(或者E:/mavenrepository)中,并将其中的

!-- localRepository

| The path to the local repository maven will use to store artifacts.

|

| Default: ~/.m2/repository

localRepository/path/to/local/repo/localRepository

--

修改为:

localRepositoryE:/mavenrepository/localRepository

第三步:

修改Eclipse的MAVEN的存储位置:

点击Browser按钮,选择settings.xml文件,点击update Settings按钮,

上图代表成功转换仓库位置。

可以看到位置已经发生了变化。

maven repository 私人仓库怎么搭建

方法:

1.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng

2.使用version准备路径,将version连接到后面:org/testng/testng/5.8

3.将artifactId于version以分隔符连字号连接到后面:org/testng/testng/5.8/tesng-5.8

4.判断如果构件有classifier,就要在 第4项 后增加?分隔符连字号 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5

5.检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/5.8/tesng-5.8-jdk5.jar

6、基于groupId准备路径,将句点分隔符转成路径分隔符,就是将 ?"." ?转换成 "/" ; example: org.testng ---org/testng

参考资料

Maven详解之仓库------本地仓库、远程仓库.研发管理[引用时间2017-12-28]

maven repository怎么理解

简单点来说,repository就是个仓库。

maven里有两种仓库,本地仓库和远程仓库。远程仓库相当于公共的仓库,大家都能看到。

本地仓库是你本地的一个山寨版,只有你看的到,主要起缓存作用。

当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。如果有则直接返回,否则会向远程仓库请求,并做缓存。

如何将 jar 包提交到 maven repository

大体过程如下:

首先你要登录maven,然后添加jar包的GAV属性或者通过pom文件自动获取GAV,然后上传jar包后即可。

我使用的maven服务端是nexus

(责任编辑:IT教学网)

更多

推荐XML/XSLT文章