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

    躲得过初一躲不了十五,maven迟早要学的,准备现在就学。

    何为maven?

           优秀的构建工具(makefile、ant),依赖管理工具和项目信息管理工具。

           

    目录:

           bin 运行脚本。

           boot包含类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置。

           conf settings.xml maven配置文件。

           lib maven运行需要的java类库。

    helloworld实例。详见《maven实战》。

           创建hello-world文件夹。创建pom.xml。

    <?xml version="1.0" encoding="UTF-8"?>
    <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>com.juvenxu.mvnbook</groupId>
        <artifactId>hello-world</artifactId>
        <version>1.0-SNAPSHOT</version>
        <name>Maven Hello World Project</name>
    </project>

          在hello-worldsrcmainjavacomjuvenxumvnbookhelloworld目录下建HelloWorld.java文件。

    package com.juvenxu.mvnbook.helloworld;
    
    public class HelloWorld {
        public String sayHello() {
            return "Hello Maven";
        }
    
        public static void main(String[] args) {
            System.out.print( new HelloWorld().sayHello() );
        }
    }

            接着cmd在hello-world目录下运行命令mvn clean compile  会编译,并生成class文件。该项目可直接导入eclipse。(安装eclipse的maven插件)

            加入依赖包:

    <?xml version="1.0" encoding="UTF-8"?>
    <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>com.juvenxu.mvnbook</groupId>
        <artifactId>hello-world</artifactId>
        <version>1.0-SNAPSHOT</version>
        <name>Maven Hello World Project</name>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.7</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>

           测试方法默认在src/test/java

    package com.juvenxu.mvnbook.helloworld;
    
    import static org.junit.Assert.assertEquals;
    import org.junit.Test;
    
    public class HelloWorldTest {
        @Test
        public void testSayHello() {
            HelloWorld helloWorld = new HelloWorld();
    
            String result = helloWorld.sayHello();
    
            assertEquals( "Hello Maven", result );
        }
    }

    maven测试命令:

           mvn clean test

    maven打包(默认jar):

             mvn clean package

    为了打包后可运行,需要继续配置pom.xml:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <transformers>
                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    maven构建项目骨架:

               mvn archetype:generate

    坐标和依赖是任何一个构件在maven世界的逻辑表示方式。而构建的物理表示方式是文件,maven通过仓库统一管理这些文件。

    这个坐标定义的是文件在仓库中的存储路径。

    maven仓库分为两种,本地仓库和远程仓库。当maven根据构件寻找时,先寻找本地仓库再寻找远程仓库。

    除了groupId,artifectId,version以外,可以包含的元素:

    type:依赖的类型。

    scope:依赖的范围。

    optional:依赖是否可选。

    exclusions:用来排除传递性依赖。

    生命周期:

           maven的生命周期就是为了所有的构建过程进行抽象和统一。maven从大量项目和构建工具中学习和反思,总结了一套高度完善的、易扩展的生命周期。

    插件:

           生命周期是抽象的,实际工作由插件来做。

    maven实践的思路:

    最近刚接触的一个项目,一开始很诧异为什么一个项目会分为这么多的小项目,其实这就是用maven做到的。maven不仅是依赖包管理工具,也是项目编译构建工具。

  • 相关阅读:
    zz 通过INFORMATION_SCHEMA.INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS 三个表获取事务与锁的信息
    binlog在并发状态下的记录
    关于mysql的metadata lock
    测试相关
    数组
    方法、递归算法
    顺序、选择、循环结构
    Scanner
    包机制、javadoc
    变量、常量
  • 原文地址:https://www.cnblogs.com/rixiang/p/6427601.html
Copyright © 2011-2022 走看看