3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例,mavenmave
1 若想让maven项目依赖另外一个maven项目,被依赖的项目要在maven仓库中有相应的jar包,所以要对依赖的项目执行mvninstall命令。
2 新建第二个项目模块HelloFriend目录及约定的目录结构
|
HelloFriend --src -----main ----------java ----------resources -----test ---------java ---------resources --pom.xml |
3 在项目HelloFriend根目录建立pom.xml
|
<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>cn.toto.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HelloFriend</name>
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency>
<dependency> <groupId>cn.toto.maven</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency>
</dependencies> </project> |
4 在src/main/java/cn/toto/maven目录下新建文件HelloFriend.java文件
|
package cn.toto.maven;
import cn.toto.maven.Hello;
public class HelloFriend {
public String sayHelloToFriend(String name){
Hello hello = new Hello(); String str = hello.sayHello(name)+" I am "+this.getMyName(); System.out.println(str); return str; }
public String getMyName(){ return "John"; }
} |
5 在/src/test/java/cn/toto/maven目录下新建测试文件HelloFriendTest.java
|
package cn.toto.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.toto.maven.Hello;
public class HelloFriendTest { @Test public void tesHelloFriend(){
HelloFriend helloFriend = new HelloFriend(); String results = helloFriend.sayHelloToFriend("tuzuoquan"); assertEquals("Hello tuzuoquan! I am John",results);
} } |
6 在HelloFriend目录下执行命令mvn命令(注意到HelloFriend文件夹)
7 重新在HelloFriend目录下执行命令mvnpackage
首先检查依赖写法,包括groupId,version等等,是否与你打包的jar一致。然后再从依赖的那3个jar包找原因,确定依赖的这三个jar包确实已经打包成jar成功,并且不是空的jar,确定依赖的插件库repository能够索引到你定义的这三个jar包。
说明你的【被依赖项目】存在错误(maven install生成不了jar),你可以试试install一下【被依赖项目】,看是否能成功在本地仓库生成对应的jar,如果不能,则检查一下【被依赖项目】(即使是测试功能代码也要检查,maven很严格),如果能,则把主项目pom文件的dependency删除,update maven依赖,在加上所删除dependency,update maven依赖即可。
大部分的时候,项目所依赖的 【内部jar】是存在于公司nexus私有仓库中的,所以即使【被依赖的项目】存在错误也不影响使用。但如果nexus没有【内部jar】则会报错。