zoukankan      html  css  js  c++  java
  • Maven学习笔记

    Maven学习笔记
     
    目录
    一、环境配置
    二、修改仓库位置
    三、创建Maven项目
    四、编译项目代码
    五、导入到eclipse中
    六、包的更新与下载
    七、创建一个Web项目
    八.使用Jetty
    九、创建一个代理仓库
    十、maven项目在eclipse中调试--tomcat
    十一、maven项目在eclipse中调试--jetty
    十二、创建多模块项目
    十三、完整可用的pom.xml
    十四、使用SpringSide4
     
     
    一、环境配置
    1.下载 http://maven.apache.org/download.cgi 并解压到电脑 D:Apachemaven-3.1.1
     
    2.配置环境变量 
    a.创建用户变量:
    变量名:M2_HOME
    变量值:D:Apachemaven-3.1.1
    b.然后在Path中加入;%M2_HOME%in;
     
    3.验证是否成功安装
    mvn -v
     
    二、修改仓库位置
    仓库用于存放我们项目所依赖的所有jar包。不修改使用默认地址也可以。
    默认地址是:~/.m2/repository  windows环境下地址就是 C:Usershuligong.m2 epository
     
    修改D:Apachemaven-3.1.1confsettings.xml中的<localRepository>D:/maven/repo</localRepository>
     
     
    三、创建Maven项目
    D:pub>mvn archetype:create -DgroupId=com.jeedev.myproj -DartifactId=myproj -DpackageName=com.jeedev .myproj -Dversion=1.0
     
    新的方式(mvn的archetype插件提供一种从现有项目生成archetype的功能):
    D:pub>mvn archetype:generate -DgroupId=com.jeedev.myproj -DartifactId=myproj -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
     
     
    查看生成的pom.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>com.jeedev.myproj</groupId>
      <artifactId>myproj</artifactId>
      <version>1.0</version>
      <packaging>jar</packaging>
     
      <name>myproj</name>
      <url>http://maven.apache.org</url>
     
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
     
     
    说明:
    project:pom.xml文件中的顶层元素;
    modelVersion:指明POM使用的对象模型的版本。这个值很少改动。
    groupId:指明创建项目的组织或者小组的唯一标识。GroupId是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,org.apache.maven.plugins是所有Maven插件项目指定的groupId。
    artifactId:指明此项目产生的主要产品的基本名称。项目的主要产品通常为一个JAR文件。第二,象源代码包通常使用artifactId作为最后名称的一部分。典型的产品名称使用这个格式: <artifactId>- <version>. <extension>(比如:myapp-1.0.jar)。
    version:项目产品的版本号。Maven帮助你管理版本,可以经常看到SNAPSHOT这个版本,表明项目处于开发阶段。
    name:项目的显示名称,通常用于maven产生的文档中。
    url:指定项目站点,通常用于maven产生的文档中。
    description:描述此项目,通常用于maven产生的文档中。
     
    对于一个项目中只有下面的一部分是是我们需要关注的:
    <groupId>com.jeedev.myproj</groupId>
    <artifactId>myproj</artifactId>
    <version>1.0</version>
     
     
    四、编译项目代码
    进入项目目录执行 
    D:pubmyproj>mvn clean compile 
    clean 告诉maven清理输入出目录target/,compile告诉maven编译项目主代码。
     
    将项目结构转成eclipse支持项目结构,使之可以导入到eclipse中:
    D:pubmyproj>mvn eclipse:eclipse
     
    常用命令
    mvn clean compile -U  package -Dmaven.test.skip=true
     
    部署第三方jar到本地仓库
    mvn install:install-file  -Dfile=D:/mywork/thirdparty-libs/jeedev-commons-1.0.0.jar  -DgroupId=org.jeedevframework.commons  -DartifactId=jeedevframework-commons -Dversion=1.0.0 -Dpackaging=jar
     
    部署第三方jar到远程仓库
    mvn deploy:deploy-file -Dfile=D:/mywork/thirdparty-libs/wechat4j-1.3.1.jar  -DgroupId=org.sword.wechat4j  -DartifactId=sword-wechat4j -Dversion=1.3.1 -Dpackaging=jar -Durl=http://maven.domain.cn/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
    (备注:需配置settings.xml)
     
    发布到本地和远程仓库
    mvn clean install deploy
     
     
    指定pom.xml
    mvn clean compile package -Dmaven.test.skip=true -f pom_war.xml

    mvn clean deploy -f pom_jar.xml

     
     
    五、导入到eclipse中
    1.打开eclipse,先配置maven仓库路径
    Window----Perferences-----java-----Build Path-----Classpath Variables
    New一个变量的类路径。
    Name:M2_REPO
    Path:C:Usershuligong.m2 epository
     
    2.在eclipse中导入刚创建的项目myproj
     
    六、包的更新与下载
    Maven 中央仓库地址:http://search.maven.org
     
    格式:
        <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.1.1</version>
          <optional>true</optional>
        </dependency>
     
    更改后重新执行:mvn eclipse:eclipse  
     
     
     
     
     
     
    其他命令:
    validate:验证工程是否正确,所有需要的资源是否可用。
    compile:编译项目的源代码。
    test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
    Package:把已编译的代码打包成可发布的格式,比如jar。
    integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
    verify:运行所有检查,验证包是否有效且达到质量标准。
    install:把包安装在本地的repository中,可以被其他工程作为依赖来使用。
    Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
    clean:清除先前构建的artifacts(在maven中,把由项目生成的包都叫作artifact)。
    site:为项目生成文档站点。 
    -Dmaven.test.skip=true 跳过单元测试
     
    mvn clean dependency:copy-dependencies package
    这个命令将先清除项目,然后拷贝依赖,最后把项目打包
     

    mvn -f xxx.xml可以指定pom文件进行构建。

    mvn -s /path/to/user/my-settings.xml 指定settings文件

    mvn dependency:purge-local-repository 删除本地仓库

    分析jar包依赖关系

    mvn dependency:analyze

    mvn dependency:tree

     

    mvn dependency:tree > tree.txt

    mvn dependency:tree -Dverbose -Dincludes=org.elasticsearch > tree.txt

     
    七、创建一个Web项目
     
    比普通项目多加一个参数DarchetypeArtifactId ,命令如下:
     
    D:pub>mvn archetype:generate -DgroupId=com.jeedev.mywebproj -DartifactId=mywebproj -DarchetypeArtif actId=maven-archetype-webapp -Dversion=1.0
     
    然后在项目目录下执行mvn eclipse:eclipse即可。
     
     
    八.使用Jetty
     
    http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin 
     
    在上一节七的基础上,修改pom.xml
     
      <build>
        <finalName>mywebproj</finalName>
        <plugins>
                <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                    <version>7.0.0.pre5</version>
                </plugin>
            </plugins>
      </build>
     
    然后再项目下执行 D:pubmywebproj>mvn jetty:run
    就默认启动端口为8080的server了,访问 http://localhost:8080/mywebproj/ 就能看到hello world了。
     
    一个可参考的配置:
      <build>
        <finalName>mywebproj</finalName>
        <plugins>
                <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                    <version>7.0.0.pre5</version>
                    <configuration>
                        <scanIntervalSeconds>10</scanIntervalSeconds>
                        <stopKey>foo</stopKey>
                        <stopPort>9999</stopPort>
                    </configuration>
                    <executions>
                        <execution>
                            <id>start-jetty</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <scanIntervalSeconds>0</scanIntervalSeconds>
                                <daemon>true</daemon>
                            </configuration>
                        </execution>
                        <execution>
                            <id>stop-jetty</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                <goal>stop</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
      </build>
     
     
    九、创建一个代理仓库
     
     
    十、maven项目在eclipse中调试--tomcat
     
     
    十一、maven项目在eclipse中调试--jetty
     
     
    十二、创建多模块项目
     
     
    十三、完整可用的pom.xml
    1.SpringMVC+Spring+Ibatis+MySQL
    2.SpringMVC+Spring+Hibernate+MySQL
    3.Struts2+Spring+Hibernate+MySQL
     
    十四、使用SpringSide4
    http://www.cnblogs.com/heshan664754022/p/3255557.html  如何将Springside4项目转成Eclipse项目
     
     
    十五:修改版本号
    mvn versions:set -DnewVersion=2.1.0-SNAPSHOT
    mvn versions:commit
    mvn versions:revert
     

    相关参数说明

    参数默认值说明
    allowSnapshots false 是否更新-snapshot快照版
    artifactId ${project.artifactId} 指定artifactId
    generateBackupPoms true 是否备份pom文件
    groupId ${project.groupId} 指定groupId
    newVersion   设置的新版本号
    nextSnapshot false 更新版本号为下一个快照版本号
    oldVersion ${project.version} 指定需要更新的版本号可以使用缺省‘*'
    processAllModules false 是否更新目录下所有模块无论是否声明父子节点
    processDependencies true 是否更新依赖其的版本号
    processParent true 是否更新父节点的版本号
    processPlugins true 是否更新插件中的版本号
    processProject true 是否更新模块自身的版本号
    removeSnapshot false 移除snapshot快照版本,使之为release稳定版
    updateMatchingVersions true 是否更新在子模块中显式指定的匹配版本(如/项目/版本)。

    参考 versions-maven-plugin 命令介绍

     
     
    参考:
    http://www.cnblogs.com/fnng/archive/2011/12/16/2290587.html   Maven 环境快速搭建二(eclipse+maven2+jetty)
    http://trinea.iteye.com/blog/1290898   maven用途、核心概念、用法、常用参数和命令、扩展
    http://www.blogjava.net/alwayscy/archive/2007/05/19/118584.html    天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试
     
     

    http://aijezdm915.iteye.com/blog/1335025 maven Nexus入门指南(图文)

    http://blog.csdn.net/wang379275614/article/details/43940259/  Maven仓库—Nexus环境搭建及简单介绍

    http://121088825.iteye.com/blog/2337515  速度很快的 Maven 远程仓库(阿里云 nexus 仓库)

  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/huligong1234/p/3527685.html
Copyright © 2011-2022 走看看