aven笔记(2)-- 构建Java Project 及 Maven命令使用

1. 创建一个Java Project

1.1)File--->New--->Other--->Maven--->Maven Projet

1.2)选择maven-archetype-quickstart


1.3)输入项目的数据


1.4)生成的项目目录结构如下:


其中src/main/java 放项目的代码文件、src/test/java 放项目的测试文件。

另外一般项目都有另外两个source folder,src/test/resource 和src/main/resource,用于放配置文件。没有可手工添加上。

src/main/java和src/main/resource指定target/calsses

src/test/java和src/test/resource指定target/test-classes


1.5) 在根目录下,可以看到一个pom.xml文件,这个文件是Maven的核心

pom.xml:

Xml代码   收藏代码
  1. <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>com.esom.tech</groupId>

  5. <artifactId>helloworld</artifactId>

  6. <version>0.0.1-SNAPSHOT</version>

  7. <packaging>jar</packaging>

  8. <name>helloworld</name>

  9. <url>http://maven.apache.org</url>

  10. <properties>

  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  12. </properties>

  13. <dependencies>

  14. <dependency>

  15. <groupId>junit</groupId>

  16. <artifactId>junit</artifactId>

  17. <version>4.7</version>

  18. <scope>test</scope>

  19. </dependency>

  20. </dependencies>

  21. </project>


a)pom意思就是project object model。

b)pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。

c)pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml


d)Maven项目中,通常由groupId、artifactld、version、packaging来定位一个项目的坐标。坐标也是构件、插件的唯一标识符。格式为groupId:artifactld:packaging:version。这里项目的坐标为com.esom.tech:helloworld:jar:0.0.1-SNAPSHOT


b) 通过上面项目目录结构可以看到,Maven自动下载了junit-4.7.jar。这也是通过pom.xml声明了对junit的依赖。Maven会自动从中央仓库(sonatype公司维护)下载依赖的构件到本地仓库。每个本地项目再从本地公用构件里面根据依赖获取自己需要的构件。

中央仓库:http://repo1.maven.org/maven2/

本地仓库:~\.m2\repository (对应目录:C:\Documents and Settings\yongsong_lin\.m2\repository)

私有仓库:类似中央仓库,但只能公司内部(有权限的人)使用,并可以代理中央仓库的jar包和其他地址仓库的包,起到中介作用。Maven笔记(3)会介绍到 使用Nexus构建Maven私有仓库。

本机仓库默认在C盘,随着构件的增多,占用空间会越来越大,可以通过修改D:\apache-maven-3.0.4\conf\settings.xml 来改变仓库的目录

Xml代码   收藏代码
  1. <!-- localRepository  

  2. | The path to the local repository maven will use to store artifacts.  

  3. |  

  4. | Default: ~/.m2/repository  

  5. <localRepository>/path/to/local/repo</localRepository>

  6. -->


e) Maven的依赖管理:通常情况下,一个项目会包含很多依赖,也可以包含依赖于其它构件的依赖。也就是说,项目依赖于一个库,而这个库又依赖于很多其它的库,这个时候通过Maven,你只需要添加那个直接依赖的库就行了,Maven会自动帮你隐式的添加间接依赖。也就是支持传递依赖。


2. Maven命令使用

命令使用测试可以使用maven自动生成的App.java 和AppTest.java,为了继承我们一向的helloworld优良传统,这里编写Helloworld.java和HelloworldTest.java替换之。


项目主代码:Helloworld.java

Java代码   收藏代码
  1. package com.esom.tech.helloworld;  

  2. publicclass Helloworld {  

  3. public String sayHello(){  

  4. return"Hello World!";  

  5.    }  

  6. publicstaticvoid main(String[] args) {  

  7.        System.out.println(new Helloworld().sayHello());  

  8.    }  

  9. }  


项目测试代码:HelloworldTest.java

Java代码   收藏代码
  1. package com.esom.tech.helloworld;  

  2. import com.esom.tech.helloworld.Helloworld;  

  3. import junit.framework.TestCase;  

  4. publicclass HelloworldTest extends TestCase{  

  5. publicvoid testSayHello(){  

  6.        String ret = new Helloworld().sayHello();  

  7.        assertEquals(ret, "Hello World!");  

  8.    }  

  9. }  


2.1)用Maven编译源程序,进入命令行,切换到项目根目录,执行命令:mvn clean compile 或者 mvn clean compiler:compile,会看到如下输出:


编译成功,clean告诉Maven清理输出目录target/,compile告诉Maven编译项目主代码,编译后的主代码class文件存放在target\classes里面。


2.2)用Maven进行单元测试,进入命令行,切换到项目根目录,执行命令:mvn clean test,会看到如下输出:


测试成功,编译后的测试代码class文件存放在target\test-classes里面,并会在target项目下生成测试报告。


2.3)打包及运行


a. 打包:进入命令行,切换到项目根目录,执行命令:mvn clean package 进行打包,输出如下:


执行打包命令前,会先执行编译和测试命令,构建成功后,再在target目录下生成helloworld-0.0.1-SNAPSHOT.jar包。


b. 安装:进入命令行,切换到项目根目录,执行命令:mvn clean install 进行安装 ,输出如下:


执行安装命令前,会先执行编译、测试、打包命令构建成功,再将项目的jar包安装到本地仓库。


c.  运行jar:进入命令行,切换到项目根目录,执行命令:java -cp target\helloworld-0.0.1-SNAPSHOT.jar com.esom.tech.helloworld.Helloworld,输出Hello World! :



命令回顾:

mvn clean compile

mvn clean test

mvn clean package

mvn clean install

  • helloworld.rar (9.5 KB)

  • 下载次数: 0

  • 查看图片附件

分享到:      

http://mixo44.iteye.com/blog/1778853

你可能感兴趣的:(配置文件,source,folder,target,根目录)