maven学习笔记(一)hello world

原创 2013年12月04日 12:59:19

环境:win7   maven版本:apache-maven-3.1.1-bin.zip

 

maven安装


1、确定已经正确安装jdk,若未安装需要先安装jdk
2、http://maven.apache.org/download.cgi 官网下载maven压缩包(Window下载zip包,linux下载tar.gz包),

     解压缩apache-maven-3.1.1-bin.zip,解压后本地路径为D:\dev_env\apache-maven-3.1.1
3、配置环境变量:
     新建环境变量 M2_HOME = D:\dev_env\apache-maven-3.1.1
     在环境变量PATH的后面加上 ;%M2_HOME%\bin  

      注意:最前面有一个分号,环境变量配置以分号分隔,若在未配置maven path时,path环境变量最末尾已经有分号,则 ;%M2_HOME%\bin 前面的分号可以不加
4、在控制台(cmd)下输入mvn -v命令,验证maven的安装情况

 

自定义修改本地仓库路径

maven默认的本地仓库路径是当前用户目录下的 .m2/repository (本地环境地址是:C:\Users\Administrator\.m2\repository ,若为linux系统则为~/.m2/repository)
  可自定义修改本地仓库的路径,修改后的路径为D:\dev_env\maven\repos (建议新建两层目录maven和repos作为本地仓库)
   修改步骤:
   1)修改%M2_HOME%/conf(D:\dev_env\apache-maven-3.1.1\conf)下的settings.xml文件,
        增加 <localRepository>D:/dev_env/maven/repos</localRepository>  路径为修改后的本地仓库的路径
         settings.xml文件中的localRepository配置被注释掉了,新增的localRepository配置可以添加到注释下面

 


   2)将修改后的文件复制到D:\dev_env\maven目录下(注意该目录是本地仓库目录的上级目录)

 

简单实例

maven项目目录规范

源代码应该放置到src/main/java中
源代码的资源文件应该放置在src/main/resources文件夹中
测试代码应该放置到src/test/java中
测试代码的资源文件应该放置在src/test/resources文件夹中

maven命令

mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理)
mvn clean compile-->表示先运行清理之后运行编译,会见代码编译到target文件夹中
mvn clean test-->运行清理和测试
mvn clean package-->运行清理和打包
mvn clean install-->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用
mvn clean deploy-->运行清理和发布(发布到私服上面)

实例步骤:

1、新建一个项目跟目录01,本地路径为D:\test\01

2、在01目录下新建pom.xml文件,每一个dependency代表项目所依赖的一个jar包,01项目依赖junit包

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>hello</groupId>
	<artifactId>hello-first</artifactId>
	<version>SNAPSHOT-0.0.1</version>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

</project>

3、根据maven项目目录规范创建源码目录

package xixi;

public class HelloWorld
{
	public String sayHello ()
	{
		return "hello world";
	}
}


4、根据maven项目目录规范创建测试源码目录


package xixi;

import org.junit.*;
import static junit.framework.Assert.*;
import xixi.*;

public class TestHello
{
	@Test
	public void testSayHello()
	{
		HelloWorld hello = new HelloWorld();
		assertEquals(hello.sayHello(), "hello world");
		
	}
}


5、在cmd下进入项目根目录 D:\test\01

    

6、运行maven命令   运行maven命令请保持网络畅通

      mvn compile    编译

      mvn test  测试

最后的BUILD SUCCESS 表示执行命令成功

 7、新建项目跟目录02和源码目录,02项目中的类会用到01项目中的HelloWorld类

       由于02项目会引用01项目中的类,此时01项目应该作为一个jar包供02使用,02项目的依赖配置中会依赖01项目

package xixi;

import xixi.*;

public class HelloWorld2
{
	public static void main(String args[])
	{
		HelloWorld hello = new HelloWorld();
		System.out.println(hello.sayHello());
	}
}

 

D:\test\02\pom.xml    02依赖配置中的信息必须和01pom文件中定义的groupId  artifactId  version  保持一致     02项目依赖hello-first  jar包,在dependency中配置

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>hello</groupId>
	<artifactId>hello-second</artifactId>
	<version>SNAPSHOT-0.0.1</version>

	<dependencies>
		<dependency>
			<groupId>hello</groupId>
			<artifactId>hello-first</artifactId>
			<version>SNAPSHOT-0.0.1</version>
			<scope>compile</scope>
		</dependency>
	</dependencies>

</project>


8、    在控制台cmd下进入01项目的根目录 D:\test\01 ,执行 mvn clean install命令  (这个命令会把01项目打成jar包放到本地仓库中,运行完命令可在仓库中找到01项目jar包)

9、在控制台cmd下进入02项目的根目录 D:\test\02 ,执行mvn compile 命令,出现 BUILD SUCCESS信息表示执行成功

     02项目会依赖01项目,02项目在编译的时候会先从本地仓库中寻找依赖的jar包,寻找不到再从maven中央仓库中寻找(所以要先在01项目下运行 mvn  install将01 jar包发布到本地仓库中,02寻找依赖时才能正确导入jar包

10、在控制台cmd下进入02项目的根目录 D:\test\02 ,执行mvn clean package命令,会将02项目打成一个jar包(位于target下,执行编译完的class文件也在该目录下)

        此时生成的jar包是不可执行的,02项目中的HelloWorld2.java文件中有个main方法,要生成可执行的jar包需要借助maven-shade-plugin,配置完插件后的pom文件如下

D:\test\02\pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>hello</groupId>
	<artifactId>hello-second</artifactId>
	<version>SNAPSHOT-0.0.1</version>

	<dependencies>
		<dependency>
			<groupId>hello</groupId>
			<artifactId>hello-first</artifactId>
			<version>SNAPSHOT-0.0.1</version>
			<scope>compile</scope>
		</dependency>
	</dependencies>
	
	<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指定main方法所在的类 -->
									 <mainClass>xixi.HelloWorld2</mainClass>  
                                 </transformer>  
                             </transformers>  
                         </configuration>  
                     </execution>  
                 </executions>  
             </plugin>  
         </plugins> 
	</build>
</project>

11、更改完pom文件,在控制台cmd下进入02项目的根目录 D:\test\02 ,重新执行mvn clean package命令,打开target目录,可以看到hello-second-SNAPSHOT-0.0.1.jar和original-hello-second-SNAPSHOT-0.0.1.jar两个jar包,前者是带有Main-Class信息的可运行jar,后者是原始的jar,打开hello-second-SNAPSHOT-0.0.1.jar的

META-INF/MANIFEST.MF,可以看到这样一行信息:Main-Class: xixi.HelloWorld2

12、在控制台cmd下进入02项目的根目录 D:\test\02,执行 java -jar target\hello-second-SNAPSHOT-0.0.1.jar  命令,执行jar包中的main方法,控制台输出hello world

最后附上一个maven学习视频下载链接:http://www.verycd.com/topics/2917293/

版权声明:本文为博主原创文章,未经博主允许不得转载。

Maven入门(一)(HelloMaven)

每次学习新知识,都从helloworld开始,今天也不例外,hellowrold我来了。 一、Maven项目之核心--------pom.xml 1.pom.xml ...
  • lht0211
  • lht0211
  • 2013年06月27日 21:46
  • 1721

你知道Hello World程序的由来吗?

Hello World是一个最著名的程序。对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序。实际上,这个程序的功能只是告知计算机显示Hello World这句话。传统意义上,程序员一...
  • testcs_dn
  • testcs_dn
  • 2016年09月26日 20:56
  • 2294

24种编程语言的Hello World程序

这篇文章主要介绍了 24 种编程语言的 Hello World 程序,包括熟知的 Java、C 语言、C++、C#、Ruby、Python、PHP 等编程语言,需要的朋友可以参考下。 Hello...
  • yilovexing
  • yilovexing
  • 2016年11月21日 10:14
  • 2635

几乎所有编程语言的hello, world程序(2)

D// Hello World in Dimport std.stdio;void main() { writefln("Hello World!"); }D4// Hello World as...
  • NoMasp
  • NoMasp
  • 2015年04月29日 23:02
  • 2671

各类编程语言的Hello World写法

(每隔一段时间整理几门语言的HelloWorld写法,更新中......) A开头:         1、Android(版本4.2.2)           Activity:     ...
  • whxaing2011
  • whxaing2011
  • 2014年03月07日 23:01
  • 1953

C++之第一个程序Hello World,使用IO库输出Hello World

1.首先打开软件工具Visual C++ 6.0软件,打开之后,新建一个C++ Source File文件,输入文件名和你想要存放此程序的地方,如下图一样,点击确定即可编写C++代码: 2.代码...
  • u012561176
  • u012561176
  • 2014年12月16日 11:13
  • 1481

第一个jsp文档,hello world

当被错误505、404折磨N遍之后,页面:localhost:8080/工程名/test.jsp  终于能正常显示出来了…… 在这里记录一下建立工程的过程。 1)新建一个 Dynamic ...
  • u014691453
  • u014691453
  • 2016年08月17日 16:31
  • 1493

php环境搭建,小白helloworld初试

小白学习php,环境搭建,helloworld初始。
  • u013100581
  • u013100581
  • 2017年01月04日 17:48
  • 833

Linux 最简单内核模块 Hello World 示例

注:如果想要按照本篇实践,需要有能运行的arm开发板和对应版本的内核(如果想在Linux主机上编译运行,请参考附1) 1. 在相应版本内核的driver目录下新建如下文件: module fil...
  • chinaeran
  • chinaeran
  • 2015年04月28日 08:38
  • 5983

C++ 入门教程(三) Hello World 程序讲解

上回讲到第一个程序 Hello World,现在分析以下Hello World。。。开始进入无图模式。。 把上回的代码搬过来: #include int main(void) { std::...
  • AncientPeople
  • AncientPeople
  • 2015年08月24日 14:18
  • 1847
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven学习笔记(一)hello world
举报原因:
原因补充:

(最多只允许输入30个字)