`
foxinmy
  • 浏览: 5927 次
  • 性别: Icon_minigender_1
  • 来自: 湘
社区版块
存档分类
最新评论

Maven初探:一切从HelloMM开始!

阅读更多

     前言:初次发帖,此文为maven的初级文章,老鸟飞过。(java技术交流群:178547149)

 

     引子:maven是一款基于项目对象模型(POM)的项目构建工具,可以轻松的帮助开发人员构建项目,生成站点,打包jar等操作,鄙人对maven不算很深入,言多必失,o(︶︿︶)o 。

 

一、环境设置(Windows)

     1.在此之前请确保本机已安装jdk,并配置好了环境变量。所谓环境设置就是使maven的相关命令能在dos下识别,下载maven压缩包。直接解压到某一目录下,其中

   ---bin目录:包含运行maven命令的脚本;

   ---boot目录:包含运行maven所需的类加载jar包;

   ---conf目录:包含一个全局配置文件;

   ---lib目录:与maven相关的所有jar包;

记住其路径,打开环境变量设置对话框,新建M2_HOME变量,其值为maven的解压路径,在path变量中追加%M2_HOME%\bin,打开dos键入mvn -v,出现下图则表示成功。

 

     mvn -v    

2.用maven构建项目时,首先会从http://maven.apache.org/这个网站找所需的jar包,然后下载到本地仓库(repository)方便以后重用,当然只需下载一次。到maven的conf目录找到settings.xml配置文件,找到如下节点:

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

 默认的本地仓库路径为 ~/.m2/repository,~表示为当前登陆的用户根目录。现在我们修改它的默认路径,到C:\Documents and Settings\Administrator\.m2目录下找到settings.xml文件,修改如下图所示。

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
   -->
  <localRepository>D:\\soft\\repository</localRepository>

也就是说以后所缺的jar包下载后都会放到D盘的soft/repository文件夹下,还有一点需要说明,maven的conf文件夹下的settings.xml配置文件是基于全局的,计算机上所有的用户都将受到影响,而后者是用户范围的,只对当前用户

产生影响,为了避免一些无意识的操作而影响到所有的用户,一般推荐用户范围的,如果没找到.m2文件夹,先跳到第二步

构建项目,然后回过头再来找找就有了。

 

二、构建项目

     1.首先创建一个文件夹,名称随便,约定成俗,我新建了一个HelloWorld文件夹。

     2.在HelloWorld文件夹新建src目录与pom.xml文件,名称请跟我一样,谢谢。

     3.然后在src目录下新建main与test文件夹,名称保持一致。

     4.在main与test文件夹下分别新建java文件夹,名称一致。

     5.接下来的文件夹可以算是package的名,我这为了方便在src与test的java目录下分别新建了maven/demo两个文件夹,现在你的文件夹应该是这样的:

 

     maven bulid

     6.有点烦哈,在src\main\java\maven\demo目录下新建一个HelloMM程序,代码如下:

package maven.demo;

public class HelloMM{
	public String SayHi(){
		return "HelloMM";
	}
	public static void main(String[] args){
		System.out.print(new HelloMM().SayHi());
	}
}

    7.囧,在src\test\java\maven\demo目录下新建一个TestApp测试程序,代码如下:

package maven.demo;
import org.junit.Test;
import org.junit.BeforeClass;
import org.junit.Before;
import static org.junit.Assert.assertEquals;

public class TestApp{
	HelloMM hi = null;
	
	@BeforeClass
	public static void setUp(){
		System.out.println("BeforeClass!");
	}
	@Before
	public void setBefore(){
		hi = new HelloMM(); 
		System.out.println("Before!");
	}	
	@Test
	public void isTest(){
		assertEquals("HelloMM",hi.SayHi());
	}
}

   8.==,好像忘记啥东西了,怎么可以少了一个最重要的pom.xml呢,最后我们写写项目构建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>
	<groupId>maven.demo</groupId><!-- 坐标ID唯一的 -->
	<artifactId>maven-demo</artifactId><!-- 构件ID -->
	<packaging>jar</packaging><!-- 打包形式 -->
	<version>1.0-snapshot</version><!-- 内部开发版本 -->
	
	<url>http://maven.apache.org/</url><!-- jar包的来源 -->
	
	<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 字符编码 -->
	</properties>
	
	<dependencies><!-- 依赖包 -->
		<dependency>
			<groupId>junit</groupId><!-- 坐标ID -->
			<artifactId>junit</artifactId>
			<scope>compile</scope><!-- 作用域 -->
			<version>4.8.2</version><!-- 版本号 -->
		</dependency>
	</dependencies>
</project>

   pom.xml用于定义项目的行为,属性,依赖等等,所有配置都可完成。

   至此我们的项目搭建算是完成,有点繁碎呢,后面有更简单的做法,暂且不表。

 

三、编译项目

     鸡冻人心的时刻到了,打开你的dos黑窗口,cd到HelloWorld文件夹,然后键入mvn compile,不出意外会出现下图:

 

mvn comile

 

  可以看到maven会从网站下载所需的包,这里下载的是junit测试包,大家可以到本地仓库文件夹看到下载的jar包,运行次命令后你会看到HelloWorld文件夹下多了一个target文件夹,里面则是编译后的文件,如下图所示:

 

   maven-compile-target

  同样可以使用mvn test-compile命令对测试源代码进行编译,大家可以试试,接下来我们运行mvn test命令,对项目进行编译测试,会看到如下图所示:

mvn test

 现在把TestApp测试类改下,让它测试不通过,代码如下:

 

@Test
	public void isTest(){
		assertEquals("Hello",hi.SayHi());
	}

 然后我们再次运行mvn test 命令,则会看到下图所示:

   mvn -test

断言失败,单元测试失败。

 

四、打包项目

      1.运行mvn clean package 命令,clean表示清除以前的编译文件(删除targer文件夹),package表示将整个项目打包,我们运行试试:

 

mvn -package

结果得到了4个文件夹和1个jar包,其中包括站点报告、打包文件等。

      2.然后我们进入cd到target目录,运行java -cp maven-demo-1.0-snapshot.jar maven.demo.HelloMM

命令,这个时候会执行main方法,也就是输出"HelloMM"字符串,如下图所示:

 

java -cp

     3.做到这步还不行,通过java -jar命令执行生成的jar包会出现错误,如下图所示:

 

java -jar

一个可执行的jar包必须指定一个main类,现在我们去实现它,找到pom.xml文件,增加如下节点:

 

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-shade-plugin</artifactId>
			<version>1.2.1</version>
			<executions>
				<execution>
					<phase>package</phase>
					<goals>
						<goal>shade</goal>
					</goals>
					<configuration>
						<transformers>
							<transformer
								implementation="org.apache.maven.plugins.shade.
								resource.ManifestResourceTransformer">
								<mainClass>maven.demo.HelloMM</mainClass>
							</transformer>
						</transformers>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

      4.再次运行mvn clean package 命令,记得要在pom.xml的目录下,执行命令后在target目录生成了两个jar包

  maven-demo-1.0-snapshot.jar:打包文件,其中包括依赖包(junit);

  original-maven-demo-1.0-snapshot.jar:打包文件的原始版本;

现在到target目录执行java -jar maven-demo-1.0-snapshot.jar命令,控制台输出"HelloMM",成功了。

 

java -jar

   5.接下来把项目导入到eclipse里,mvn eclipse:eclipse执行它,打开心爱的eclipse,import it!

 

eclipse

   6.至于在eclipse安装maven插件,运行命令等操作,有机会再讲。

   7.最后说说简单创建项目命令。

普通的Java项目: 
  mvn archetype:create   -DgroupId=com.yourcompany  -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-quickstart 
普通的Web项目: 
   
mvn archetype:create  -DgroupId=com.yourcompany -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-webapp 

还有一个是mvn archetype:generate命令,一步一步创建maven项目,可以去试试。

其实都是大同小异,无非是指定groupid,dartifactid之类的。

五、结束语

    总算写完了,貌似图贴的很多,如有错误,请大声指正。

分享到:
评论
2 楼 lg985 2011-12-30  
图片看不到。愣徘徊
1 楼 daixu2008 2011-12-30  
嗯。幸苦了

相关推荐

Global site tag (gtag.js) - Google Analytics