maven的使用笔记

  1. 云栖社区>
  2. 博客列表>
  3. 正文

maven的使用笔记

mmythos 2017-01-06 10:37:37 浏览263 评论0

摘要: 1. 安装 下载zip包解压,将bin目录配置至PATH(最好是配置HOME然后引用) 修改conf下53行的setting标签,指定本地仓库的路径 在eclipse或Myeclipse中add,并采用自己的setting文件 1.

1. 安装

  • 下载zip包解压,将bin目录配置至PATH(最好是配置HOME然后引用)
  • 修改conf下53行的setting标签,指定本地仓库的路径
  • 在eclipse或Myeclipse中add,并采用自己的setting文件

1.1 Maven常用命令:

  • mvn archetype:generate :创建 Maven 项目
    • -DgroupId=组织名/公司网址的反写+项目名
    • -DartifactId=项目名-模块名
    • -Dversion=版本号
    • -Dpackage=代码所在的包
  • mvn compile :编译源代码
  • mvn test-compile :编译测试代码
  • mvn test : 运行应用程序中的单元测试
  • mvn site : 生成项目相关信息的网站
  • mvn clean :清除目标目录中的生成结果
  • mvn package : 依据项目生成 jar 文件
  • mvn install :在本地 Repository 中安装 jar
  • mvn deploy:将jar包发布到远程仓库
  • mvn eclipse:eclipse :生成 Eclipse 项目文件

mvn install:install-file -Dfile=D:\mvn\spring-context-support-3.1.0.RELEASE.jar
-DgroupId=org.springframework -DartifactId=spring-context-support
-Dversion=3.1.0.RELEASE -Dpackaging=jar


2.maven配置

2.1 eclipse中配置:

高版本自带maven,需要注意的是eclipse的JRE环境目录要选择jdk下的JRE

2.2 配置插件 插件地址

2.3 配置文件的详解


  <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">
 <!--当前pom的版本号-->
 <modelVersion>4.0.0</modelVersion>

 <groupId>反写的公司名+项目名</groupId>
 <artifactId>项目名+模块名</artifactId>
 <!--
     第一个 0 是大版本号
     第二个 0 是分支版本号
     第三个 0 是小版本号
     snapshot 快照
     alpha 内部测试
     beta 公测
     Release 稳定
     GA 正式发布
 -->
 <version>0.0.1-SNAPSHOT</version>
 <!--jar war zip pom-->
 <packaging>jar</packaging>
 <!--项目描述名-->
 <name>test</name>
 <!--项目地址-->
 <url>http://maven.apache.org</url>
 <!--项目描述-->
 <description></description>
 <developers></developers>
 <licenses></licenses>
 <orgnazation></orgnazation>
 <!--
     依赖
 -->
 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <!--
        test 表明这个构件只在junit  中可以被引用
        compile 默认的
        provided 只在编译中引用
        runtime 编译和运行都有效
     -->
     <scope>test</scope>
     <!--设置依赖是否可选,默认是false-->
     <optional></optional>
     <!--排除依赖传递列表-->
     <exclusions></exclusions>
   </dependency>
 </dependencies>
 <dependencyManagement>
 </dependencyManagement>

 <build>
  <plugins>
     构件三要素
  </plugins>
 </build>
 <!--继承-->
 <parent></parent>
 <modules>
     <module></module>
 </modules>

2.3.1配置:源码package成JAR包:(pom.xml中配置)


  <project>

  ......

  <build>
   <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-source-plugin</artifactId>
       <version>3.0.1</version>
       <executions>
        <execution>
        <phase>package</phase>
        <goals>
            <goal>jar-no-fork</goal>
        </goals>
        </execution>
       </executions>
     </plugin>
   </plugins>
  </build>
  </project>

3. maven概念

  • 坐标:三个标签唯一的标识了项目
  • 仓库:jar包的集合目录
    • 本地仓库
    • 远程仓库

4.maven的依赖

4.1处理项目间依赖方法

项目A依赖B
A项目 pom.xml中配置依赖 (构件三要素)
B项目 先clean package
然后build 的 install
A 项目 compile

4.2依赖冲突

  • 依赖路径短优先
    • 1 A->B->C->X(jar文件)
    • 2 A->C->X(jar文件)
    • 会选择 2 中的X的jar版本
  • 先声明的优先

4.3继承

新建一个项目作为父项目,可以删除Test目录(无用)
然后在需要引用父项目pom文件的地方加上parent 标签里面写上 父项目的三要素

5.使用maven新建Web3.0项目 网络maven仓库

  • 新建maven 选择webapp 然后输入三要素
  • 但是因为模板默认的是web2.3,所以要手动修改成3.0

- 1. pom文件中添加插件 编译部分

  <plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.0</version>
   <configuration>
    <source>1.8</source>
    <target>1.8</target>
   </configuration>
  </plugin>

  • 2.navigator目录模式下 修改相关文件,把2.3改成3.0
  • 3.eclipse中右击改动Facets 然后maven-update一下就可以了

添加web容器

Jetty
  • http://mvnrepository.com/ 里找到想要的版本,加入即可
  • 特别注意 NIO的原因,静态文件在服务器启动的时候不能更改,需要找到maven仓库下的org/eclipse/jettyjetty-webapp/
    下的jar包中的default配置文件,把useFileBuffer标签的 true 改成false

  <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.16.v20140903</version>
            <!-- <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> 
                <version>2.2</version> -->
            <executions>
                <execution>
                    <!-- 在打包成功后使用jetty:run来运行 -->
                    <phase>package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <stopKey>stop</stopKey>
                <stopPort>9999</stopPort>
                <scanIntervalSeconds>1</scanIntervalSeconds>
                <contextXml>${project.basedir}/src/main/resources/jetty-context.xml</contextXml>
                <webApp>
                    <contextPath>/</contextPath>
                </webApp>
                <connectors>
                    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                        <port>80</port>
                        <maxIdleTime>60000</maxIdleTime>
                    </connector>
                </connectors>
            </configuration>
        </plugin>

  • 部署成功后,使用jetty:run 即可运行起服务器
Tomcat
  • 去Tomcat官网 找到maven plugins进入找到想要的版本即可

  <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat6-maven-plugin</artifactId>
            <version>2.2</version>
            <executions>
                <execution>
                    <!-- 在打包成功后使用tomcat6:deploy来运行 -->
                    <phase>package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 注意此处的url -->
                <url>http://localhost:8080/manager/text</url>
                <server>tomcat6</server> <!-- 此处的名字必须和setting.xml中配置的ID一致 -->
                <path>/mavenProject</path> <!-- 此处的名字是项目发布的工程名 -->
            </configuration>

  • 部署完成后 tomcat7:deploy 运行服务器

5.1 加入Servlet的API包:



javax.servlet
javax.servlet-api
3.0.1
provided

Maven和Ant的区别一:

1.ant脚本是可以直接运行在maven中的。maven和ant最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(project object model)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹。

2.maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde 所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的common-logging 是哪个版本的,唯一的方法就是打开 META-INF 目录下MANIFEST.MF。

3.maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

4.maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。而ant都需要自己去写。

5.maven目前不足的地方就是没有象ant那样成熟的GUI界面,不过mavengui正在努力中。目前使用maven最好的方法还是命令行,又快又方便

Maven的优势:

  • 协同开发的基本规范,为大家提供方便的协作的模式,能增加代码的复用,提高生产率。
  • 提供方便,规范化的打包方法,是公司完成自动构建系统的核心部分,能帮助提高敏捷开发的效率(敏捷开发提倡尽早集成)。
  • 减少冗余,减少出错的可能。
  • 中心资源库管理,能减低源码库的大小,中心资源库可以统一定期备份。
  • 目录结构规范,让开发者从一个maven项目过度到另一maven项目很容易。
  • 大量的开源项目使用了maven。

用云栖社区APP,舒服~

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击

网友评论

mmythos
文章23篇 | 关注1
关注
业内领先的面向企业的一站式研发提效平台(研发效能),通过项目流程管理和专项自动化提效工具,能... 查看详情
用配置管理(Application Configuration Management,简称 ... 查看详情
提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里云总监课正式启航

阿里云总监课正式启航