zoukankan      html  css  js  c++  java
  • MVN 资料一

     文章转自:http://youshini.iteye.com/blog/1072960

    1.Maven是什么?

    首先Maven是一个项目管理工具,基于项目对象模型(POM),它主张遵循"约定优于配置"这个思想。 Maven 通过给项目提供明智的默认行为来融合这个思想。 在没有自定义的情况下,源代码假定在 {basedir}/src/main/java,资源文件假定是在{basedir}/src/main/resources 。测试代码假定是在 {basedir}/src/test 。虽然,一开始觉得Maven这么做有些霸道,但是只要我们遵循这些约定,Maven 可以使我们的项目运行更快,并且能够很方便的帮你管理项目报告,生成站点,管理JAR文件。
    Maven 的核心其实不做什么实际的事情,它就是一个管理者,负责解析一些 XML 文档,管理生命周期与插件。因此,Maven 被设计成将主要的职责委派给一组 Maven插件,这些插件影响 Maven生命周期,执行对目标的访问。也就是说,Maven大部分的智能是由插件实现的,而插件从 Maven 仓库获得,这些Maven插件是一个单个或多个目标的集合。
    例如:Maven Archetype 插件的一个命令mvn archetype:create 其中archetype:create是一个Maven目标,archetype是一个插件标识,create是目标标识。
    2.本地仓库(localRepository)
    第一次运行时maven将从远程仓库下载构件和插件到你本机上,存储在你的本地Maven仓库里。一旦 Maven 已经从远程仓库下载了一个构件,它将永远不需要再下载一次,因为 maven会首先在本地仓库查找插件,然后才是其它地方。
    在Maven的安装目录下,conf/ 目录包含了一个全局的 settings.xml文件,该文件用来自定义你机器上 Maven 的一些行为。该文件包含了用户相关的认证,仓库和其它信息的配置,用来自定义 Maven 的行为。Maven默认的本地的仓库目录是~/.m2/repository/,当你从远程 Maven 仓库下载依赖的时候,Maven 在你本地仓库存储了这个依赖的一个副本。当然你也可以更改本地仓库的位置,只要修改settings.xml文件中的localRepository属性 就可以,如下代码所示: 修改后你的本地仓库地址就是D:/maven-2.1.0/repo

    3.Pom文件
    Maven中最基础的是Pom.xml文件,该文件中定义了项目的坐标,以及项目所需依赖关系和插件行为。一个Maven坐标可以用来唯一标识一个项目, 一个依赖,或者Maven POM 里的一个插件,坐标由groupId, artifactId, version 和 packaging组成,结构如下所示:
    groupId:artifactId:packaging:version(mavenbook:my-app:jar:1.0-SNAPSHOT.)
    当我们新建一个工程后,pom文件会自动产生项目坐标信息,例如通过命令行建立一个web工程(其中‘/’为续行符):
    mvn archetype:create /-DgroupId=my.test.maven
    /-DartifactId=demo.web
    /-DpackageName=my.test
    /-DarchetypeArtifactId=maven-archetype-webapp
    这个web工程的坐标信息如下:
    my.test.maven
    demo.web
    war
    1.0-SNAPSHOT
    pom文件中通过dependency属性定义依赖,plugin属性定义插件。
    依赖:
     <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.13</version>
            </dependency>

    插件:
     <plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>2.3.2</version>
    				<configuration>
    					<source>1.6</source>
    					<target>1.6</target>
    					<encoding>UTF-8</encoding>
    					<debug>true</debug>
    					<failOnError>false</failOnError>
    					<executable>${JAVA_HOME}/bin/javac</executable>
    				</configuration>
    			</plugin>
    【整个POM.xml文件,大概就这两块了】
    4.经常使用的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. 清除产生的项目:mvn clean
    9. 生成eclipse项目:mvn eclipse:eclipse
    10. 编译测试的内容:mvn test-compile
    11. 只打jar包: mvn jar:jar
    12. 当开发一个带有很多失败单元测试的系统
    mvn test -Dmaven.test.failure.ignore=true
    13. 想要整个的跳过测试
    mvn install -Dmaven.test.skip=true
    maven打包跳过测试:
    mvn package -Dmaven.test.skip=true

    5、Assembly插件maven assembly plugin

    使 用MavenExec插件运行了SimpleWeather应用程序。虽然MavenExec能运行程序并且产生输出,你不能就 把Maven当成是你程序运行的容器。如果你把这个命令行程序分发给其他人,你大概就需要分发一个JAR或者一个ZIP存档文件或 者TAR压缩过的GZIP文件。下面的小节介绍了使用MavenAssembly插件的预定义装配描述符生成一个可分发的JAR文件的 过程,该文件包含了项目的二进制文件和所有的依赖。
    MavenAssembly插 件是一个用来创建你应用程序特有分发包的插件。你可以使用MavenAssembly插件以你希望的任何形式来装配输出,只需定义一个自定义的装 配描述符。后面的章节我们会说明如何创建一个自定义装配描述符,为SimpleWeather应用程序生成一个更复杂的存档文件。本章我们将会 使用预定义的jar-with-dependencies格式。要配置MavenAssembly插件,我们需要在pom.xml中 的build配置中添加如下的plugin配置。
    Pom.xml配置如下:
    <build>
    <plugins>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    </configuration>
    </plugin>
    </plugins>
    </build>
    mvnassembly:assembly
    在target/simple-weather-1.0-jar-with-dependencies.jar装配好之后,我们可以在命令行重新运行Main类。在你项目的基础目录下运行以下命令:
    java-cpsimple-weather-1.0-jar-with-dependencies.jarorg.sonatype.mavenbook.weather.Main10002
    这样我的依赖包里的class文件也一起打进了这个包里了!
    6、
    使用maven命令:mvn dependency:sources下载依赖包的源代码。
    【常用命令】
    mvn archetype:generate //创建 Maven 项目
    mvn compile //编译源代码
    mvn test-compile //编译测试代码
    mvn test //运行应用程序中的单元测试
    mvn site //生成项目相关信息的网站
    mvn clean //清除目标目录中的生成结果
    mvn package //依据项目生成 jar 文件 【一般直接使用: mvn clean package 】
    mvn install //在本地 Repository 中安装 jar
    mvn eclipse:eclipse //生成 Eclipse 项目文件
    需要在eclipse中,配置环境变量M2_REPO,Window->Preferences->Java->Build Path->Classpath Variables
    【生成项目】
    JAVA项目 mvn archetype:create -DgroupId=net.welken -DartifactId=common
    web 项目 mvn archetype:create -DgroupId=net.welken -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp 【创建项目】
    MAVEN2使用mvn install命令出现java.lang.OutOfMemoryError错误解决办法
    命令行先执行:set MAVEN_OPTS=-Xms256m -Xmx256m,然后照常执行:mvn install.问题解决!
    用maven编译源代码,且跳过测试,最后将编译好的工程放到本地仓库里面。此时引用此文件的工程只需要刷新一下,就可以得到最新的依赖来执行自己的文件了。
    mvn clean install -Dmaven.test.skip -Pautoconf
    转载地址:http://tianya23.blog.51cto.com/1081650/242944
    mvn 的其他一些基础知识:
    http://www.javaeye.com/wiki/hzbook/2872-Maven-in-action

    src/main/java :是项目编译时默认的编译文件位置。
    src/main/resources :是项目资源文件默认存放的位置。
    对应POM.xml 的:
    <build>
    <resources>
    <resource>
    <directory>src/main/java</directory>
    </resource>
    <resource>
    <directory>src/main/resources</directory>
    </resource>

    </resources>
    </build>

    POM.xml会下载项目需要的包:
    <dependency>
    <groupId>net.sf.json-lib</groupId> //对应.m2/repository/net/sf/json-lib/json-lib/2.3/json-lib-2.3.jar
    <artifactId>json-lib</artifactId>
    <version>2.3</version>
    <classifier>jdk15</classifier>
    </dependency>

    命令:mvn eclipse:eclipse 编译生成eclipse项目,便可导入我们的开发环境中。
    命令:mvn clean package 包括编译,,,打包。所有生成文件都在target目录下。
  • 相关阅读:
    设计模式
    LintCode 数组(一)
    LintCode 字符串(二)
    LintCode 字符串(一)
    Java 多线程---volatile, ThreadLocal
    HTTP之缓存首部
    HTTP之首部
    HTTP之状态码
    web安全之XSS和CSRF
    web安全之同源策略
  • 原文地址:https://www.cnblogs.com/hlantian/p/10194596.html
Copyright © 2011-2022 走看看