Web、移动开发环境、管理:(2.2)Maven 约定、项目构建、依赖

创建时间:2017/1/14 20:48:43
关键字:Maven 约定,Maven项目构建,Maven依赖

目录

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

成功.