zycchen 发表于 2017-2-28 10:26:43

maven入门详解

  ----------------准备工作-------------
Jdk1.6以上java开发环境。
Eclipse IDE 一个。
Maven 3.0.3下载地址: http://maven.apache.org/docs/3.0.3/release-notes.htmlhttp://maven.apache.org/download.cgi
1、快速搭建步骤
  将下载文件解压,然后设置maven环境
  如果你配置过jdk的话,这里对你应该不难。如我的maven环境为:F:\maven\apache-maven-3.0.3
  我的电脑-----属性----高级-----环境变量-----环境变量-----新建
  变量名:M2_HOME       变量值:F:\maven\apache-maven-3.0.3
  找到path 在环境变量值尾部加入:;%M2_HOME%\bin;---前面注意分号
  当然,你也可以直接在path 路径下加入:;F:\maven\apache-maven-3.0.3\bin只是上面的方式更优雅一点。
  打开命令提示符(开始---运行---cmd),检查我们的java环境和maven环境是否有误。

  第二步:修改仓库位置
修改我们仓库地址,仓库用于存放我们项目所依赖的所有jar包。
我的仓库路径:F:\maven\repo----这个路径是我自己创建,你可以将路径创建在任何位置。
打开F:\maven\apache-maven-3.0.3\conf\目录下的setting.xml文件,设置成我们创建的仓库路径

下面我们用一个命令验证一下。打开命令提示符,输入:mvn help:system
该命令会打印出所有的java系统属性和环境变量。这些信息对我们日常的编程工作很有帮且。
如果运行的过程中没有错误,打开我们仓库(F:\maven\repo)会发现里面多了一些文件。这些文件就是我们从maven的中央仓库下载到本地仓库的。
第三步:创建maven项目
创建一个我们自己的项目。我们通过maven命令行方式创建一个项目   (创建的目录可以随意不一定是F:\maven   任何存在的目录都可以)

  mvn archetype:create -DgroupId=com.chongshi.test -DartifactId=hello -DpackageName=com.chongshi.test -Dversion=1.0
  因为是第一次构建项目,所有依赖的jar包都要从maven的中央仓库下载,所以需要时间等待。等以后我们的本地仓库中积累了我们常用的jar包后,我们的开发将变得非常规范和方便。
  借助下载jar包的时间,我们来了解一下pom.xml文件。





1 <project xmlns="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
5      <groupId>com.chongshi.test</groupId>
6       <artifactId>hello</artifactId>
7       <version>1.0</version>
8    <packaging>jar</packaging>
9
10   <name>hello</name>
11   <url>http://maven.apache.org</url>
12
13   <properties>
14   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15   </properties>
16
17   <dependencies>
18   <dependency>
19       <groupId>junit</groupId>
20       <artifactId>junit</artifactId>
21       <version>3.8.1</version>
22       <scope>test</scope>
23   </dependency>
24   </dependencies>
25 </project>
View Code   &Oslash; project:pom.xml文件中的顶层元素;
&Oslash; modelVersion:指明POM使用的对象模型的版本。这个值很少改动。
&Oslash; groupId:指明创建项目的组织或者小组的唯一标识。GroupId是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,org.apache.maven.plugins是所有Maven插件项目指定的groupId。
  &Oslash; artifactId:指明此项目产生的主要产品的基本名称。JAVA项目的主要产品通常为 .JAR 文件或者 .war文件。源代码包通常使用artifactId作为产品名称的一部分。
    典型的产品名称使用这个格式: <artifactId>- <version>. <extension>  (比如:myapp-1.0.jar)。
  
&Oslash; version:项目产品的版本号。Maven帮助你管理版本,可以经常看到SNAPSHOT这个版本,表明项目处于开发阶段。
&Oslash; name:项目的显示名称,通常用于maven产生的文档中。
&Oslash; url:指定项目站点,通常用于maven产生的文档中。
&Oslash; description:描述此项目,通常用于maven产生的文档中。
第四步:编译项目代码
我们的项目已经创建完成。但我们点开目录发现,它并不是我们eclipse所需要的项目目录格式。我们需要把它构建成我们eclipse可以导入的项目。     
在命令提示符下进入到我们的创建的项目目录(F:\maven\hello)下,执行:mvn clean compile

Clean 告诉maven清理输入出目录target/,compile告诉maven编译项目主代码。 
不要急,我们又需要一段时间来下载相关jar包。^_^!第一次用maven要学会淡定。                                  
目是编译完了,但项目的目录结构还不是我们想要的eclipse的项目结构,是不能导入到eclipse中的。所以,还需要执行一个命令:mvn eclipse:eclipse     
命令执行完成后就得我们需要的项目目录了。
  第五步:导入eclipse
打开的我们的eclipse工具。先配置maven仓库路径
Window----Perferences-----java-----Build Path-----Classpath Variables    ——>New一个变量的类路径。

   Name :M2_REPO   注意这个名字必须要大写。Path :F:/maven/repo点击“Folder…”找到有本地仓库的位置。
 下面,可以导入我的hello项目了。Eclipse如何导入项目,我这里就不说了,如果你是个java开发人员的话。
如何创建一个web项目
1. 如何创建一个web项目。其实非常简单,只是比普通项目多加一个参数DarchetypeArtifactId ,命令如下:
mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=mywebapps-DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0
定位到创建项目的目录下构建成eclipse项目:
F:\mywebapp>mvn eclipse:eclipse
通过maven构建后就是我们eclipse所需要的项目目录如下。

web项目的标准目录结构如下:

在构建的项目个中没有java目录,通过手动创建就可以。(maven 的作用是帮助程序员管理 jar包的依赖,规范项目的结构,其他的一些项目中需要的java类、xml配置信息等都需要自己编写)
通过pom.xml 配置创建项目





1 <project xmlns="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/maven-v4_0_0.xsd">
3   <modelVersion>4.0.0</modelVersion>
4   <groupId>com.company</groupId><!--指定组名,例如:org.apache.maven-->
5   <artifactId>as</artifactId><!--指定工程名例如:eclipse中显示的名称-->
6   <packaging>war</packaging><!-- 项目打包的格式,web项目一般打包成war,java项目打包成jar。 packaging values are: pom, jar, , war, ear, rar, par-->
7   <version>0.0.1-SNAPSHOT</version><!--指定版本号-->
8   <name>AUTH</name><!--一些无关太重要的东西,用户描述你的项目的名字,可选的-->
9
10   <properties><!--设置属性   -->
11         <servlet-api.version>2.5</servlet-api.version>
12         <junit.version>4.11</junit.version>
13         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
14   </properties>
15   <dependencies>
16         <dependency>
17            <groupId>org.springframework</groupId>
18            <artifactId>spring-context</artifactId>
19            <version>3.2.3.RELEASE</version>
20         </dependency>
21         <dependency>
22             <groupId>javax.servlet</groupId>
23             <artifactId>servlet-api</artifactId>
24             <version>${servlet-api.version}</version><!--用到了上面设置的属性 -->
25             <scope>provided</scope>
26         </dependency>
27         <dependency>
28             <groupId>junit</groupId>
29             <artifactId>junit</artifactId>
30             <version>${junit.version}</version>
31             <scope>test</scope>
32         </dependency>
33   </dependencies>
34
35   <build>
36         <sourceDirectory>src/main/java</sourceDirectory><!--描述工程中java类存放的位置-->
37         <testSourceDirectory>src/main/test</testSourceDirectory><!--描述工程中测试类存放的位置-->
38         <scriptSourceDirectory>src/main/webapp</scriptSourceDirectory><!--描述工程中脚本(js、jsp等)类存放的位置-->
39         <resources><!--描述工程中资源的位置-->
40             <resource>
41               <directory>src/main/resources</directory>
42               <includes>
43                     <include>**/*.*</include>
44               </includes>
45             </resource>
46         </resources>
47         <plugins><!--使用到的插件-->
48             <plugin><!--编译插件-->
49               <groupId>org.apache.maven.plugins</groupId>
50               <artifactId>maven-compiler-plugin</artifactId>
51               <version>2.3.1</version>
52               <configuration>
53                     <target>1.6</target>
54                     <source>1.6</source>
55                     <encoding>UTF-8</encoding>
56               </configuration>
57             </plugin>
58             <plugin>
59               <groupId>org.apache.maven.plugins</groupId>
60               <artifactId>maven-dependency-plugin</artifactId>
61               <executions>
62                     <execution>
63                         <id>copy</id>
64                         <phase>install</phase>
65                         <goals>
66                           <goal>copy-dependencies</goal>
67                         </goals>
68                         <configuration>
69                           <outputDirectory>
70                                 ${project.build.scriptSourceDirectory}/WEB-INF/lib
71                           </outputDirectory>
72                         </configuration>
73                     </execution>
74               </executions>
75             </plugin>
76         </plugins>
77   </build>
78 </project>
View Code  pom.xml完成之后,根据pom.xml 中目录结构创建项目结构目录如下

  左边是根据pom中配置穿件的目录结构,右边是执行 mvn eclipse:eclipse之后的目录结构。
  在项目中我们引入了了spring框架,具体配置可以参考http://www.springsource.org/spring-framework
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>3.1.1.RELEASE</version>
  </dependency>
  还依赖servlet、junit。在build标签下,加入了一下插件,如编译插件可以设定使用的java版本、拷贝jar到制定目录下的插件。 (插件可以更具“功能”去百度、google搜索)。 maven构建了基本的项目,之后就可以在相应的目录编写代码了,所有的xml java 等等还需要手动去写。
参考
http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html入门
http://www.cnblogs.com/fnng/archive/2011/12/16/2290587.html   web项目   jetty是通过maven 运行tomcat的插件
http://www.cnblogs.com/phoebus0501/archive/2011/05/10/2042511.html    MAVEN常用命令
http://www.blogjava.net/jianyue/articles/227932.html   maven pom.xml详解
http://blog.csdn.net/yuxinleipp/article/details/7633600    maven 拷贝依赖jar到 lib中
http://www.blogjava.net/jianyue/articles/maven2_setting.html   maven2 setting文件详解
http://blog.csdn.net/sosohotsummer/article/details/8963869   
http://blog.csdn.net/johnjobs/article/details/8110779
http://blog.csdn.net/shb_derek/article/details/8163461    maven用途、核心概念、用法、常用参数和命令、扩展

  MAVEN常用命令
  Maven库:
  http://repo2.maven.org/maven2/
  Maven依赖查询:
  http://mvnrepository.com/
  Maven常用命令:
1. 创建Maven的普通java项目:
   mvn archetype:create
   -DgroupId=packageName
   -DartifactId=projectName
2. 创建Maven的Web项目:   
    mvn archetype:create
    -DgroupId=packageName   
    -DartifactId=webappName
    -DarchetypeArtifactId=maven-archetype-webapp   
3. 编译源代码: mvn compile
4. 编译测试代码:mvn test-compile   
5. 运行测试:mvn test   
6. 产生site:mvn site   
7. 打包:mvn package   
8. 在本地Repository中安装jar:mvn install
9. 清除产生的项目:mvn clean   
10. 生成eclipse项目:mvn eclipse:eclipse
11. 生成idea项目:mvn idea:idea
12. 组合使用goal命令,如只打包不测试:mvn -Dtest package   
13. 编译测试的内容:mvn test-compile
14. 只打jar包: mvn jar:jar
15. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile
      ( -skipping 的灵活运用,当然也可以用于其他组合命令)
16. 清除eclipse的一些系统设置:mvn eclipse:clean
ps:
一般使用情况是这样,首先通过cvs或svn下载代码到本机,然后执行mvn eclipse:eclipse生成ecllipse项目文件,然后导入到eclipse就行了;修改代码后执行mvn compile或mvn test检验,也可以下载eclipse的maven插件。
mvn -version/-v显示版本信息
mvn archetype:generate      创建mvn项目
mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app   创建mvn项目
mvn package            生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn jetty:run            运行项目于jetty上,
mvn compile                  编译
mvn test                  编译并测试
mvn clean                  清空生成的文件
mvn site                  生成项目相关信息的网站
mvn -Dwtpversion=1.0 eclipse:eclipse      生成Wtp插件的Web项目
mvn -Dwtpversion=1.0 eclipse:clean      清除Eclipse项目的配置信息(Web项目)
mvn eclipse:eclipse                将项目转化为Eclipse项目
在应用程序用使用多个存储库
<repositories>   
    <repository>      
      <id>Ibiblio</id>      
      <name>Ibiblio</name>      
      <url>http://www.ibiblio.org/maven/</url>   
    </repository>   
    <repository>      
      <id>PlanetMirror</id>      
      <name>Planet Mirror</name>      
      <url>http://public.planetmirror.com/pub/maven/</url>   
    </repository>
</repositories>

mvn deploy:deploy-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar -DrepositoryId=maven-repository-inner -Durl=ftp://xxxxxxx/opt/maven/repository/

发布第三方Jar到本地库中:
mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar

-DdownloadSources=true
-DdownloadJavadocs=true
mvn -e            显示详细错误 信息.
mvn validate      验证工程是否正确,所有需要的资源是否可用。
mvn test-compile    编译项目测试代码。 。
mvn integration-test   在集成测试可以运行的环境中处理和发布包。
mvn verify      运行任何检查,验证包是否有效且达到质量标准。   
mvn generate-sources    产生应用需要的任何额外的源代码,如xdoclet。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lifxue/archive/2009/10/14/4662902.aspx
常用命令:
mvn -v 显示版本
mvn help:describe -Dplugin=help 使用 help 插件的describe 目标来输出 Maven Help 插件的信息。
mvn help:describe -Dplugin=help -Dfull 使用Help 插件输出完整的带有参数的目标列
mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull 获取单个目标的信息,设置mojo 参数和plugin 参数。此命令列出了Compiler 插件的compile 目标的所有信息
mvn help:describe -Dplugin=exec -Dfull 列出所有 Maven Exec 插件可用的目标
mvn help:effective-pom 看这个“有效的 (effective)”POM,它暴露了 Maven的默认设置
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook 创建Maven的普通java项目,在命令行使用Maven Archetype 插件
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序
mvn dependency:resolve 打印出已解决依赖的列表
mvn dependency:tree 打印整个依赖树
mvn install -X 想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行
mvn install -Dmaven.test.skip=true 给任何目标添加maven.test.skip 属性就能跳过测试
mvn install assembly:assembly 构建装配Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件
mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用
mvn compile 编译你的项目
mvn clean install 删除再编译
mvn hibernate3:hbm2ddl 使用 Hibernate3 插件构造数据库

附录说明:

  之前一直以为需要配置如下目录,他们在会变成可以编译java的目录,其实不需要这些不路在默认的配置文件中已经配置过,在myeclipse中右 更新项目src/main/resources和src/test/java会自动变成相应的资源目录




<build>
<!-- 默认源代码和资源文件目录配置 -->
<sourceDirectory>src/main/java </sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
页: [1]
查看完整版本: maven入门详解