项目构建工具Maven:(2)Maven 约定、项目构建、依赖

作者:陆金龙    发表时间:2017-01-14 20:48   


目录

1.Maven的约定

2. Maven项目构建 (Hello项目)

3. Maven项目依赖(HelloFriend)

1.Maven的约定

目录约定:

src/main/java 存放项目的java文件

src/main/resources 项目资源文件,如spring、hibernate的配置文件

src/test/java 存放所有测试的java文件

src/test/resources 测试资源文件

target 项目输出位置,每次构建自动产生的临时文件,clean时被删除

pom.xml 相当于web工程中的web.xml

如果已有项目的目录结构与以上约定不同,可以在pom.xml中配置映射

 

2.Maven项目构建 (Hello项目)

maven的第一个核心是构建。

第一步. 首先建立Hello项目同时建立Maven约定的目录结构

Hello

 --src

 -----main

 ----------java

 ----------resources

 -----test

 ---------java

 ---------resources

 --pom.xml

 

第二步:在src/main/java/cn/itcast/maven目录下新建文件Hello.java

package cn.itcast.maven;

public class Hello {

    public String sayHello(String name){

    return "Hello " name "!";

  }

}

 

第三步:在/src/test/java/cn/itcast/maven目录下新建测试文件HelloTest.java

package cn.itcast.maven;

import org.junit.Test;

import static junit.framework.Assert.*;

public class HelloTest {

@Test

public void testHello(){

    Hello hello = new Hello();

    String results = hello.sayHello("litingwei");

    assertEquals("Hello litingwei!",results);

  }

}

第四步:在项目Hello根目录建立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>  --声明版本号同maven-4.0.0.xsd
  <groupId>cn.itcast.maven</groupId> --当前项目隶属项目:即所在的包
  <artifactId>Hello</artifactId> --当前工程名 模块
  <version>0.0.1-SNAPSHOT</version> --项目版本 SNAPSHOT可以改release beta
  <name>Hello</name> --jar包名称 同工程名
  <dependencies>
    <dependency>
        <groupId>junit</groupId> --关键:要引用的jar包的名称junit
        <artifactId>junit</artifactId>  --关键:工程名
        <version>4.9</version> --关键:要引用的jar包的版本
        <scope>test</scope>
    </dependency>
  </dependencies>
</project>

第五步:cmd中执行mvn的各命令

C:\Users\kl>g:

G:\>cd G:\KLProject\KL.IM\maven\Hello

G:\KLProject\KL.IM\maven\Hello>mvn compile

 

注意看C:\Users\kl\.m2\repository\目录的变化和

C:\Users\kl\.m2\repository\org\apache\maven\plugins目录的变化

a)打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化

b)cmd 中继续录入mvn clean命令,然后再次查看根目录变化

c)cmd 中录入 mvn clean compile命令, 查看根目录变化

d)cmd 中录入 mvn clean test命令,查看根目录变化

e)cmd 中录入 mvn clean package命令,查看根目录变化

f)cmd 中录入 mvn clean install命令,查看根目录变化

注意:package和install命令的区别:

package是把jar打到本项目的target下,而install时要把target下的jar安装到本地仓库,供其他项目使用。

假设A项目依赖Hello项目:

package Hello项目时,jar仅仅是打到了Hello项目的target下。编译A项目时,找不到所依赖的Hello项目会报错,说明A项目在本地仓库是没有找到它所依赖的Hello项目。

install Hello项目这时,有以下日志:

[INFO] Installing G:\KLProject\KL.IM\maven\Hello\target\Hello-0.0.1-SNAPSHOT.jar to C:\Users\kl\.m2\repository\cn\itcast\maven\Hello\0.0.1-SNAPSHOT\Hello-0.0.1-SNAPSHOT.jar

[INFO] Installing G:\KLProject\KL.IM\maven\Hello\pom.xml to C:\Users\kl\.m2\repository\cn\itcast\maven\Hello\0.0.1-SNAPSHOT\Hello-0.0.1-SNAPSHOT.pom

说明Hello项目已安装到本地仓库了,并且是jar和pom同时安装的.这时候去compile A项目,编译通过。

3.Maven项目依赖(HelloFriend)

maven的第二个核心就是依赖。

第六步:新建第二个项目模块HelloFriend目录及约定的目录结构

HelloFriend

 --src

 -----main

 ----------java

 ----------resources

 -----test

 ---------java

 ---------resources

 --pom.xml

第七步:在项目HelloFriend根目录建立pom.xml

添加对Hello项目的依赖

<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.itcast.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.itcast.maven</groupId>
    <artifactId>Hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

第八步:在src/main/java/cn/itcast/maven目录下新建文件HelloFriend.java

package cn.itcast.maven;

import cn.itcast.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";

  }

}

第九步:在/src/test/java/cn/itcast/maven目录下新建测试文件HelloFriendTest.java

package cn.itcast.maven;

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

import cn.itcast.maven.Hello;

public class HelloFriendTest {

  @Test

  public void tesHelloFriend(){

    HelloFriend helloFriend = new HelloFriend();

    String results = helloFriend.sayHelloToFriend("litingwei");

    assertEquals("Hello litingwei! I am John",results);

  }

}

第十步:在HelloFriend目录下执行命令mvn package

系统报错说没有找到依赖

[ERROR] Failed to execute goal on project HelloFriend: Could not resolve dependencies for project cn.itcast.maven:HelloFriend:jar:0.0.1-SNAPSHOT: Could not find artifact cn.itcast.maven:Hello:jar:0.0.1-SNAPSHOT -> [Help 1]

第十一步:需要重新构建Hello第一个项目并安装到数据仓库,在命令行Hello根目录下执行mvn clean install

G:\KLProject\KL.IM\maven\HelloFriend>cd ..\Hello

G:\KLProject\KL.IM\maven\Hello>mvn clean install

第十二步:重新在HelloFriend目录下执行命令mvn package

G:\KLProject\KL.IM\maven\HelloFriend>cd ..\HelloFriend

G:\KLProject\KL.IM\maven\HelloFriend>mvn package

......

[INFO] BUILD SUCCESS

成功.