1、第二个工程的创建:
a、它的目录层次结构为下图所示:
注:第二个 maven 工程和第一个maven 工程保存的目录一样,和 .metadata同在一个目录下。
b、pom.xml文件 以及 HelloFriend.java 和 HelloFriendTest.java 文件填写的内容为:
<?xml version="1.0" ?>
<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.geeliGreed.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloFriend</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.geeliGreed.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
package cn.geeliGreed.maven;
import cn.geeliGreed.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";
}
}
package cn.geeliGreed.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.geeliGreed.maven.Hello;
public class HelloFriendTest {
@Test
public void testHelloFriend(){
HelloFriend helloFriend = new HelloFriend();
String results = helloFriend.sayHelloToFriend("litingwei");
assertEquals("Hello litingwei! I am John",results);
}
}
注:可以看到,HelloFriend.java 文件中的内容(import cn.geeliGreed.maven.Hello;)使用了我们第一个工程中的 Hello.java 类。(使用 dependency 定位另一个工程的位置和名字)
2、maven 的 pom.xml 文件中的依赖问题:(一个 maven 工程依赖于另一个 maven 工程)
a、在终端中进入指定的 maven 工程下有 pom.xml 文件的目录,键入 mvn compile,发现编译错误:
错误解析:执行在项目中的 HelloFriend 目标错误,不能够解析依赖的项目。
b、我们发现在 RepMaven(即本地仓库)并没有 cn 这个目录,即本地仓库中并没有 该 jar 包。
c、查询资料发现,maven 解析依赖信息时会到本地仓库中查找被依赖的 jar 包。对于我们自己开发的 maven 工程,使用 mvn install 命令安装后就可以进入仓库。
注:在 Hello 目录下,即有 pom.xml 文件的目录下执行 mvn install 后,发现在 本地仓库中已有 该目录,以及该目录下对应的文件。
d、再切换成 HelloFriend 指定的 maven 工程下指定有 pom.xml 文件的目录,键入 mvn compile,发现操作成功。
注:在 HelloFriend 目录下已经生成了 target 目录。