项目构建工具Maven:(2)Maven 约定、项目构建、依赖
目录
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
第五步: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项目的依赖
第八步:在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
成功.