Maven pom.xml添加jar文件,座标值该怎么写?

一、[b]座标[/b]是Maven最基本的概念,Maven的很多其他核心机制都依赖于座标,其中最显著的就是仓库和依赖管理。对于仓库来说,有了座标就知道在什么位置存储构件的内容。

例如junit:junit:4.8.2 就对应仓库中的路径/junit/junit/4.8.2/junit-4.8.2.pom和/junit/junit/4.8.2/junit-4.8.2.jar。这里第一个junit是groupId,第二个junit是artifactId,4.8.2是version。


二、[b]问题[/b]:对于初学者或刚使用maven的技术人员来说,若想在pom.xml中添加一个包依赖,groupId和artifactId 座标该怎么写,都是无从下手,甚至随便写一个,这样,在保存pom.xml时,maven会自动的从中央仓库下载对应的jar文件,结果都是下载失败,根本下载不下来,原因很简单,因为根据你所写的座标(groupId,artifactId,version),根本找不到对应的jar文件。这个问题,想了很久,终于找到解决方法了。

三、[b]查找正确的jar文件座标[/b]

如:项目中需要添加XmlSchema-1.4.3.jar
步骤:1、访问maven中央仓库:http://mvnrepository.com(或者访问:http://grepcode.com/) 在搜索框中输入XmlSchema 结果会显示,jar文件对应的具体座标
2、将座标,配置到pom.xml即可,这时,maven会成功下载对应的jar.

搜索结果:
Maven-Central / org.apache.ws.commons.schema / XmlSchema / [1.4.6] 1.4.7 [SNASHOT - 1.4.7]

org.apache.ws.commons.schema 对应的是groupId
XmlSchema 对应的是artifactId
1.4.7 对应的是版本号version


<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>

若随便写成:
<dependency>
<groupId>org.apache.ws</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>
则maven 是下载不成功的。


四、[b]配置完对应的座标后,部署项目时,会莫名其妙的出现一些其他的jar文件,这些并没有在pom.xml中配置,从哪来的呢?怎么去掉呢?[/b]
[b]方法一:[/b] 部署完后,在对应服务器项目中手动删除(如:tomcat),这个特麻烦,每次部署都要删除。若多出的jar,对项目启动没有影响,则可以不删除,若对项目启动报错,则必须删除。

[b]方法二:[/b] 第一、在pom.xml中,找出由哪个jar文件加载时,关联出来多余的jar文件。第二、修改pom.xml。

修改前:(neethi-3.0.1.jar中会关联出woodstox-core-asl-4.0.8.jar,需要打开neethi.jar就知道了,添加节点<exclusions> 写上具体需要过虑的jar,指定groupId,artifactId即可)
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
</dependency>

修改后:
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.0.8</version>
</exclusion>
</exclusions>
</dependency>

这时,项目部署后,woodstox-core-asl-4.0.8.jar,将不会出现了。



五、[b]父项目与子项目,配置jar依赖关系[/b]
1、父项目,主要是配置全局的jar,指定对应的版本号。
2、子项目,若需要使用jar文件,则只要指定groupId/artifactId即可。不需要写版本号。减少jar冲突的可能。

五、希望对你们有帮助,若有不明白的地方,可以随时QQ联系 251693481
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章