`
jeffrey_zhang
  • 浏览: 19379 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Maven 学习笔记

阅读更多

 

1. 在windows上安装Maven.
    设置环境变量:
        c:\users\jeffrey>set M2_HOME=C:\Apache-Maven-2.2.1
        c:\users\jeffrey>set PATH=%PATH%;%M2_HOME%\bin
       
2. Maven Help插件
    help:active-profiles : 列出当前构建中活动的Profile(项目的,用户的,全局的)
    help:effective-pom: 显示当前构件的实际pom,包含活动的profile
    help:effective-settings: 打印出项目的实际setting,包括从全局的setting和用户级别settings继承的配置
    help:describe:描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的groupId和artifactId

3. 创建简单项目
    $mvn archetype:create -DgroupId=com.trendmicro.demo -DartifactId=simple -DpackageName=com.trendmicro
   
4. pom.xml文件是Maven项目中最基础的POM.
    --groupId,artifactId,packaging,version是Maven的坐标,他们唯一标识了项目。
   
5. 最简单的POM
    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.trendmicro.demo</groupId>
        <artifactId>simple-project</artifactId>
        <version>1</version>
    </project>
    验证项目是否有效,在pom.xml文件所在的目录执行命令$mvn help:effective-pom
   
6. 项目的版本号构成
    主版本.次版本.增量版本-限定版本(如: 1.0.0-beta-01,1.2.4-alpha-09)
    SNAPSHOT版本:表示项目正处于活动的开发状态,Maven会在安装或发布这个组件的时候将该符号展开为一个日期和时间值
    LATEST和RELEASE版本:LATEST是指某个特定构件最新的发布版或者快照版,最近被部署到某个特定仓库的构件。RELEASE是指仓库中最后的一个非快照版本。
   
7. 属性引用
    一个POM可以通过一对大括号和前面一个美元符号来包含对属性的引用。
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysqlVersion}</version>
        </dependency>
    </dependencies>
    <properties>
        <mysqlVersion>(5.1,)</mysqlVersion>
    </properties>
   
8. 项目依赖
    <project>
    ...
        <dependencies>
            <dependency>
                <groupId>org.codehaus.xfire</groupId>
                <artifactId>xfire-java5</artifactId>
                <version>1.2.5</version>
                <scope>compile</scope>
            </dependency>
            ...
        </dependencies>
    ...
    </project>
    依赖范围:
        compile(编译范围):编译范围依赖在所有的classpath中可用,同时它们也会被打包
        provided(以提供范围):provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。它们不是传递性的,也不会被打包。
        runtime(运行时范围):runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
        test(测试范围):test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
        system(系统范围):system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,
            Maven也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的Maven仓库中引用依赖)。
    可选依赖:
        在POM中用<option>true</option>表示。编译这个项目的时候你需要两个依赖类库,但是你不希望在使用你类库的项目中,这两个依赖类库同时作为传递性运行时依赖出现。
    依赖版本界限:
        (,)不包含量词。[,]包含量词 如:
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>[3.8,4.0)</version>
            <scope>test</scope>
        </dependency>
    依赖管理:
        Maven在dependencyManagement元素中为你提供了一种方式来统一依赖版本号。你经常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素。
        如定义MySQL-Driver,子项目没有显式的列出mysql-connector-java依赖的版本。由于这个依赖在顶层POM的dependencyManagement元素中定义了,该版本号就会传播到所有子项目的mysql-connector-java依赖中。
            注意如果子项目定义了一个版本,它将覆盖顶层POM的dependencyManagement元素中的版本。那就是:只有在子项目没有直接声明一个版本的时候,dependencyManagement定义的版本才会被使用.

9. Maven坐标详解
    groupId:一个归类了一组相关构件。组定义符基本上类似于一个java包名。
    artifactId:是项目的主要定义符。当你生成一个构件,这个构件将由artifactId命名。当你引用一个项目,你就需要使用artifactId来引用它。artifactId和groupId的组合必须是唯一的。
    versionId:当一个构件发布的时候,它是使用一个版本号发布的。该版本号是一个数字定义。
    classifier:(最少使用的):如果你要发布同样的代码,但是由于技术原因需要生成两个单独的构件,你就要使用一个分类器。例如,你想要构建两个单独的构件成jar,一个使用java 1.4编译器,另一个使用java 1.6编译器。
   
10. Maven Surefire插件是负责运行单元测试的插件。

11. 如果想跳过整个测试后进行打包
    $mvn install -Dmaven.test.skip=true

12. 通过Maven Profiles实现可移植性
    Maven中的profile是一组可选的配置,可以用来设置或者覆盖默认值。有了profile,你就可以为不同的环境定制构建。profile可以在pom.xml中配置,并给定一个id。然后你就可以在运行Maven的时候使用的命令告诉Maven运行特定profile中的目标。以下pom.xml使用production profile覆盖了默认的Compiler插件设置。
    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.sonatype.mavenbook</groupId>
        <artifactId>simple</artifactId>
        <packaging>jar</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>simple</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <profiles>#
            <profile>
                <id>production</id>#
                <build>#
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <configuration>
                            <debug>false</debug>#
                            <optimize>true</optimize>
                            </configuration>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>
    </project>
    激活profile配置
    <profiles>
        <profile>
            <id>jdk16</id>
            <activation>#
            <jdk>1.6</jdk>
            </activation>
            <modules>#
                <module>simple-script</module>
            </modules>
        </profile>
    </profiles>

13. 使用Maven构建项目站点
    $mvn site:run




   
   
   
   
   
   
   
   
   
   
   

分享到:
评论

相关推荐

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    Maven学习笔记.zip

    **Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过使用一个项目对象模型(Project Object Model,POM),XML格式的配置文件,定义了...

    maven学习笔记01(基础入门)

    ** Maven基础入门 ** Maven是一个Java项目管理工具,它主要负责构建、依赖管理和项目信息管理。...在`maven_study_01`的学习笔记中,你可以找到更多关于Maven的基础知识和实践案例,帮助你快速上手并掌握这一工具。

    maven学习笔记整理

    maven学习笔记整理

    培训机构传出的maven学习笔记

    在“培训机构传出的maven学习笔记”中,我们可能涵盖以下几个关键知识点: 1. **Maven的基本概念**:理解Maven的核心概念,如POM.xml文件、仓库(本地仓库和中央仓库)、生命周期和构建阶段(如clean、compile、...

    maven学习笔记1

    【Maven学习笔记1】 Maven是一个强大的Java项目管理和构建工具,它可以帮助开发者管理项目的依赖、构建过程、项目信息和报告。本笔记主要涵盖了Maven的基础知识,包括资料收集、安装指南,特别是针对Linux环境下的...

    maven学习笔记.rar

    ** Maven学习笔记详解 ** Maven,作为Java项目管理和构建工具,是开发人员不可或缺的利器。它通过使用一种标准化的项目对象模型(Project Object Model,POM)来管理项目的依赖关系,构建过程以及配置信息。Maven...

    mybatis_maven学习笔记

    【mybatis_maven学习笔记】 在Java开发领域,MyBatis和Maven是两个不可或缺的工具,它们分别在数据访问层和项目构建方面扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    个人Maven学习笔记

    ### 个人Maven学习笔记 #### 为什么使用Maven? 在软件开发过程中,尤其是在使用Java进行后端开发时,项目通常会依赖大量的第三方库或框架。如果没有统一的管理工具,这些依赖很容易出现版本冲突的问题,增加了...

    Maven学习笔记

    **Maven学习笔记** Maven是一个强大的Java项目管理和构建工具,它简化了项目的构建、依赖管理和文档生成。本文档基于尚硅谷的视频教程,旨在帮助读者深入理解Maven的核心概念和使用方法。 **1. 为什么学习Maven** ...

    Maven 学习笔记.docx

    【Maven学习笔记】 Maven是一个强大的项目管理和构建工具,主要应用于Java开发领域。它能够自动管理项目的依赖关系,帮助开发者解决因jar包版本冲突、依赖管理混乱等问题带来的困扰。Maven通过制定一套规范化的项目...

    Maven学习笔记大全.docx

    **Maven学习笔记大全** Maven是一个强大的Java项目管理工具,它通过项目对象模型(Project Object Model,简称POM)来管理和构建项目。POM是一个XML文件,包含了项目的配置信息,如依赖、构建过程和插件设置。Maven...

    201205_Maven学习笔记1.rar

    【标题】:“201205_Maven学习笔记1.rar”揭示了关于Maven的深入学习内容,这个压缩包包含了一系列文档,旨在帮助开发者更好地理解和应用Maven这一强大的Java项目管理和构建工具。 【描述】:尽管描述部分是空的,...

    maven学习笔记,快速入门maven

    内容概要:maven学习笔记,适合刚接触maven的人能让你快速入门。 适用人群:大学生或者初基础maven的人 使用场景及目标:idea集成maven,用来下载依赖包

    201205_Maven学习笔记3.rar

    【标题】"201205_Maven学习笔记3.rar"所涵盖的知识点主要集中在Maven的使用和集成上,这是一个关于Maven的详细学习资料压缩包,包含多个文档,帮助用户理解并掌握Maven在实际开发中的应用。Maven是一个强大的Java...

    Maven学习笔记 PDF记录一下

    Maven学习笔记,使用中遇到的问题,集成eclipse的各种坑,以便记录,为了以后复习使用。

Global site tag (gtag.js) - Google Analytics