环境: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包

[html] view plaincopyprint?

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

  5. <modelVersion>4.0.0</modelVersion>

  6. <groupId>hello</groupId>

  7. <artifactId>hello-first</artifactId>

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

  9. <dependencies>

  10. <dependency>

  11. <groupId>junit</groupId>

  12. <artifactId>junit</artifactId>

  13. <version>4.10</version>

  14. <scope>test</scope>

  15. </dependency>

  16. </dependencies>

  17. </project>

<?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项目目录规范创建源码目录

[java] view plaincopyprint?

  1. package xixi;

  2. public class HelloWorld

  3. {

  4. public String sayHello ()

  5. {

  6. return "hello world";

  7. }

  8. }

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

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

[java] view plaincopyprint?

  1. package xixi;

  2. import org.junit.*;

  3. import static junit.framework.Assert.*;

  4. import xixi.*;

  5. public class TestHello

  6. {

  7. @Test

  8. public void testSayHello()

  9. {

  10. HelloWorld hello = new HelloWorld();

  11. assertEquals(hello.sayHello(), "hello world");

  12. }

  13. }

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项目

[java] view plaincopyprint?

  1. package xixi;

  2. import xixi.*;

  3. public class HelloWorld2

  4. {

  5. public static void main(String args[])

  6. {

  7. HelloWorld hello = new HelloWorld();

  8. System.out.println(hello.sayHello());

  9. }

  10. }

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中配置

[html] view plaincopyprint?

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

  5. <modelVersion>4.0.0</modelVersion>

  6. <groupId>hello</groupId>

  7. <artifactId>hello-second</artifactId>

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

  9. <dependencies>

  10. <dependency>

  11. <groupId>hello</groupId>

  12. <artifactId>hello-first</artifactId>

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

  14. <scope>compile</scope>

  15. </dependency>

  16. </dependencies>

  17. </project>

<?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

[html] view plaincopyprint?

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

  5. <modelVersion>4.0.0</modelVersion>

  6. <groupId>hello</groupId>

  7. <artifactId>hello-second</artifactId>

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

  9. <dependencies>

  10. <dependency>

  11. <groupId>hello</groupId>

  12. <artifactId>hello-first</artifactId>

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

  14. <scope>compile</scope>

  15. </dependency>

  16. </dependencies>

  17. <build>

  18. <plugins>

  19. <plugin>

  20. <groupId>org.apache.maven.plugins</groupId>

  21. <artifactId>maven-shade-plugin</artifactId>

  22. <version>1.2.1</version>

  23. <executions>

  24. <execution>

  25. <phase>package</phase>

  26. <goals>

  27. <goal>shade</goal>

  28. </goals>

  29. <configuration>

  30. <transformers>

  31. <transformer

  32. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

  33. <!-- mainClass指定main方法所在的类 -->

  34. <mainClass>xixi.HelloWorld2</mainClass>

  35. </transformer>

  36. </transformers>

  37. </configuration>

  38. </execution>

  39. </executions>

  40. </plugin>

  41. </plugins>

  42. </build>

  43. </project>

<?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总结1的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. Bootstrap 我的学习记录2 栅格系统初识

    以下理论内容copy自bootstrap中文网(一个不错的bootstrap学习网站). 栅格系统 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport) ...

  2. javascript中静态方法、实例方法、内部方法和原型的一点见解

    1.静态方法的定义 var BaseClass = function() {}; // var BaseClass=new Function(); BaseClass.f1 = function(){ ...

  3. ArcGIS 10 SP5中文版(ArcGIS10补丁5中文版)

    下载地址:百度网盘下载地址:http://pan.baidu.com/s/1o7qPGhk 来自:http://zhihu.esrichina.com.cn/?/sort_type-new__day- ...

  4. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q88-Q90)

    Question 88You have a Microsoft .NET Framework console application that uses the SharePoint client o ...

  5. 关于const和define的内存分配问题的总结

    关于const和define的内存分配问题 const与#define宏定义的区别----C语言深度剖析 1,  const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静 ...

  6. 如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题

    应用程序事件日志中: "C:\windows\system32\test.exe"的激活上下文生成失败.找不到从属程序集 Microsoft.VC80.MFC,processorA ...

  7. Centos7安装配置gitlab

    Centos7安装配置gitlab 这篇文字我会介绍在Centos7上安装gitlab,配置gitlab的smtp,并且创建项目demo. sudo yum install openssh-serve ...

  8. ERROR: The partition with /var/lib/mysql is too full! failed!

    发现:ERROR: The partition with /var/lib/mysql is too full! failed! 然后df -h 发现硬盘100%   于是分析到底什么占用了这近两百G ...

  9. Erlang 程序引发共享内存 bug 的一个例子

    虽然 Erlang 的广告说得非常好,functional.share-nothing.消息传递,blah blah 的,好像用 Erlang 写并发程序就高枕无忧了,但是由于 Erlang 信奉高度 ...

  10. 烂泥:KVM安装Windows Server 2008 R2使用virtio硬盘

    本文首发于烂泥行天下. 在上一篇文章中,我们介绍了使用IDE硬盘来安装Windows Server 2008 R2,这篇文章我们来介绍使用virtio硬盘来安装Windows Server 2008 ...