信步漫谈之Maven—基础介绍 一、Maven安装 二、创建Maven项目 三、Maven的常用命令

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

Maven 是一个项目管理和构建自动化工具,最直接的讲,就是可以通过配置 pom.xml 文件关联 jar 仓库中的 jar 包,方便项目的管理。
一般情况下,maven 项目的结构都如下所示:

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

1)下载 maven 安装包,例如:apache-maven-3.0.5(官网:http://maven.apache.org/)
2)maven 环境变量配置,配置方式跟 jdk 有些类似。新建环境变量 MAVEN_HOME(值为 maven 的根目录)、然后在 PATH 环境变量里加入 %MAVEN_HOME%in; 即可。
3)设置 setting.xml 文件,配置本地仓库。apache-maven-3.0.5conf下有个 setting.xml 文件,打开,localRepository 的值设置成本地仓库的路径。

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/settings-1.0.0.xsd">  
      
    <!--本地仓库。该值表示构建系统本地仓库的路径。其默认值为~/.m2/repository。 -->  
    <localRepository>D:/mavenRepository</localRepository>  
  
    <!-- 
        Maven是否需要和用户交互以获得输入。如果Maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。 
    -->  
    <interactiveMode>true</interactiveMode>  
  
    <!-- 
        Maven是否需要使用plugin-registry.xml文件来管理插件版本。如果需要让Maven使用文件~/.m2/plugin-registry.xml来管理插件版本,则设为true。默认为false。 
    -->  
    <usePluginRegistry>false</usePluginRegistry>  
      
    <!-- 
        表示Maven是否需要在离线模式下运行。如果构建系统需要在离线模式下运行,则为true,默认为false。当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。 
    -->  
    <offline>false</offline>  
    
    
    <!--  
        根据环境参数来调整构建配置的列表。settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。它包含了  
        id,activation, repositories, pluginRepositories和  
        properties元素。这里的profile  
        元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个  
        settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的 profile。  
    -->  
      
    <profiles>  
        <!--根据环境参数来调整的构件的配置-->  
        <profile>  
            <!--该配置的唯一标识符。 -->  
            <id>test</id>  
            
            <!--远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。 -->  
            <repositories>  
                <!--包含需要连接到远程仓库的信息 -->  
                <repository>  
                    <!--远程仓库唯一标识-->  
                    <id>codehausSnapshots</id>  
                    <!--远程仓库名称 -->  
                    <name>Codehaus Snapshots</name>  
                    <!--如何处理远程仓库里发布版本的下载-->  
                    <releases>  
                        <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。  -->  
                        <enabled>false</enabled>  
                        <!-- 
                            该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 
                        -->  
                        <updatePolicy>always</updatePolicy>  
                        <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。-->  
                        <checksumPolicy>warn</checksumPolicy>  
                    </releases>  
                    <!-- 
                        如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 
                    -->  
                    <snapshots>  
                        <enabled />  
                        <updatePolicy />  
                        <checksumPolicy />  
                    </snapshots>  
                    <!--远程仓库URL,按protocol://hostname/path形式 -->  
                    <url>http://snapshots.maven.codehaus.org/maven2</url>  
                    <!--  
                        用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven  
                        2为其仓库提供了一个默认的布局;然而,Maven  
                        1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。  
                    -->  
                    <layout>default</layout>  
                </repository>  
            </repositories>  
            
        </profile>  
    </profiles>  
</settings>

4)在 eclipse 上安装 maven 插件(下载插件包,解压后把对应的 features 和 plugins 这两个文件夹的内容复制到 eclipse 相同文件夹里面即可,然后重启 eclipse),打开 Window->Preferences,可以看到 Maven 配置项。

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

5)Windows–>Prefrences–>Installations–>Add。installation name 选 maven 的根目录(就是之前本地安装的 apache-maven-3.0.5),OK 即可。

注意:
1.eclipse 在安装 maven 插件后,默认使用 Maven 的 setting.xml 文件读取目录为 C:Users 当前登录用户名 .m2,但是他不会自动生成 setting.xml 文件,需要我们手动加入。
2.eclipse 在安装 maven 插件后,也有一个内嵌的 maven,这个内嵌的 Maven 通常会比较新,但不一定很稳定,而且往往也会和我们在命令行使用的 Maven 不是同一个版本。这里有会出现两个潜在的问题:首先,较新版本的 Maven 存在很多不稳定因素,容易造成一些难以理解的问题;其次,除了 IDE,我们也经常还会使用命令行的 Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,我们应该在 IDE 中配置 Maven 插件时使用与命令行一致的 Maven。

二、创建Maven项目

在 eclipse 中右键创建项目 New->Other,选择 Maven 项目

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

这时候,我们有个可选项 Create a simple project(skip archetype selection),eclipse 默认会为使用者提供一些 maven 项目骨架,如果勾选了这项,则我们将跳过使用默认骨架,自己定义 maven 项目的基础结构。

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

groupId:项目或者组织的唯一标志,并且配置时生成路径也是由此生成,如 com.alfred.test 生成的相对路径为:/com/alfred/test
artifactId:项目的通用名称
version:项目的版本
packaging:打包机制,如 pom,jar,maven-plugin,ejb,war,ear,rar,par,一般 java 项目选址 jar,web 项目选址 war
name:用户描述项目的名称,无关紧要的东西,可选
description:应该是只是写明开发团队的网站,无关紧要,可选

信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令信步漫谈之Maven—基础介绍
一、Maven安装
二、创建Maven项目
三、Maven的常用命令

注意:在实际项目中,如果需要添加外部依赖 jar 包,可以在 pom.xml 中添加依赖节点 dependencies->dependency

<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.alfred.jetty</groupId>
    <artifactId>jetty-base</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>Jetty基础</name>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>8.1.19.v20160209</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>8.1.19.v20160209</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>8.1.19.v20160209</version>
        </dependency>
    </dependencies>
</project>

三、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