手动创建第二个 Maven 项目,用以说明 Maven 的依赖问题。

依赖的范围。

用Maven编译第二个工程。

1.手动搭建另一个 Maven 工程

1)第二个Maven工程的搭建

  • 按照之前的 Maven 约定的目录结构,手动搭建另一个 Maven 工程结构如下:
  • 用于说明 Maven 的依赖问题。

maven_03_01.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>com.cwz.maven</groupId>
<artifactId>Hello2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello2</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<!--添加依赖,使得能在 Hello2 中使用 Hello 工程中的内容-->
<dependency>
<groupId>com.cwz.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 在 Hello2/src/main/java/com/cwz/maven 目录下
package com.cwz.maven;
public class Hello2 {
public String sayHelloToFriend(String name){
// 使用第一个 Maven 工程中的 Hello 类
Hello hello = new Hello();
String str = hello.sayHello(name)+" I am "+this.getMyName();
System.out.println(str);
return str;
}
public String getMyName(){
return "John";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 在 Hello2/src/test/java/com/cwz/maven 目录下
package com.cwz.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import com.cwz.maven.Hello2;

public class Hello2Test {
@Test
public void testHello2(){
Hello2 hello2 = new Hello2();
String results = hello2.sayHelloToFriend("litingwei");
assertEquals("Hello litingwei! I am John",results);
}
}

2)关于SNAPSHOT与RELEASE

  SNAPSHOT:快照,即不稳定版本的意思。

  RELEASE:释放、分离、发行,即稳定的发行版本。


2.依赖

1)依赖的基本操作

  Maven 在解析依赖时,会先到本地仓库中从查找被依赖的 jar 包。

对于自己开发的 Maven 工程,可以使用 mvn install 命令将该工程安装到本地仓库。

2)依赖的范围

maven_03_03.png

  • 【1】compile范围的依赖:
    • 对主程序有效
    • 对测试程序有效
    • 参与打包、参与部署
  • 【2】test范围的依赖:
    • 对主程序无效
    • 对测试程序有效
    • 不参与打包、不参与部署,例如:junit.jar
  • 【3】provided范围的依赖:
    • 对主程序、测试程序有效
    • 不参与打包和部署,例如:servlet-api.jar
    • 一般用于 Maven 的 Web 工程,具体使用可参照下图:

maven_03_04.png


3.用Maven编译第二个工程

  • 若是之前在第一个 Hello Maven 工程中,没用使用 mvn install 命令。则在第二个 Hello2 Maven 工程中,直接执行了 mvn compile 命令,会报错如下:

maven_03_02.png

  • 虽然说在 pom.xml 中配置了依赖,但是没安装到本地仓库,就会找不到依赖。
  • 执行完 install 命令,再执行 compile 命令即可解决上述错误。

评论