设为首页 收藏本站
查看: 829|回复: 0

[经验分享] maven入门详解

[复制链接]

尚未签到

发表于 2017-2-28 10:26:43 | 显示全部楼层 |阅读模式
  ----------------准备工作-------------
Jdk  1.6以上java开发环境。
Eclipse IDE 一个。
Maven 3.0.3下载地址: http://maven.apache.org/docs/3.0.3/release-notes.html  http://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环境是否有误。
DSC0000.png

  第二步:修改仓库位置
修改我们仓库地址,仓库用于存放我们项目所依赖的所有jar包。
我的仓库路径:F:\maven\repo----这个路径是我自己创建,你可以将路径创建在任何位置。
打开F:\maven\apache-maven-3.0.3\conf\目录下的setting.xml文件,设置成我们创建的仓库路径
DSC0001.png
下面我们用一个命令验证一下。打开命令提示符,输入:mvn help:system
该命令会打印出所有的java系统属性和环境变量。这些信息对我们日常的编程工作很有帮且。
如果运行的过程中没有错误,打开我们仓库(F:\maven\repo)会发现里面多了一些文件。这些文件就是我们从maven的中央仓库下载到本地仓库的。
第三步:创建maven项目
创建一个我们自己的项目。我们通过maven命令行方式创建一个项目   (创建的目录可以随意不一定是  F:\maven   任何存在的目录都可以)
DSC0002.png

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


DSC0003.gif DSC0004.gif


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

  左边是根据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会自动变成相应的资源目录
DSC00010.png




<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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348304-1-1.html 上篇帖子: Comet:基于 HTTP 长连接的“服务器推”技术 下篇帖子: [译] 第十三天:Dropwizard
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表