zoukankan      html  css  js  c++  java
  • 廖雪峰Java12maven基础-1maven入门-3构建流程

    maven是一个Java项目管理和构建工具:

    • 标准化项目结构
    • 标准化构建流程(编译、打包、发布)
    • 依赖管理

    Maven的构建流程

    • clean 删除所有编译生成的文件
    • compile 编译源码、编译测试源码
    • test 运行测试
    • package 打包为jar/war

    maven的生命周期Lifecycle是由一系列phase构成:

    • clean
    • compile
    • test

    一个Lifecycle可以包含clean,compile,test三个Phase。有一些phase依赖于其他的Phase,有一些是独立的,如:

    • 要执行test,必须先执行compile
    • 执行clean,是不需要执行其他的Phase的

    使用maven构建项目就是执行指定的Phase:

    • mvn compile: 将执行compile这个Phase
    • mvn clean test: 将执行clean、compile、test这些Phase

    执行一个Phase实际上是执行了一系列Phase,直到该Phase为止:例如执行mvn compile

    • validate
    • initialize
    • generate-sources
    • process-sources
    • generate-resources
    • process-resources
    • compile

    因为我们通常没有在配置文件pom.xml中定义相关的设置,所以这些Phase在执行过程中什么也不做。

    maven执行一个Phase又会触发一个或多个Goal

    如何脱离IDE,使用命令行通过maven构建项目?

    没有依赖其他jar,可以直接运行成功

    package com.forme;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            System.out.println( "Hello World!" );
        }
    }
    
    mvn clean package
    java -cp ./OneWorld-1.0-SNAPSHOT.jar  com.forme.App
    

    如果引入其他依赖,因为这种方式打出的jar包不包含任何依赖,因此会执行失败

    package com.forme;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            Log log = LogFactory.getLog(App.class);
            log.info("Hello,world!");
        }
    }
    

    总结:

    • 理解maven的概念:LifecyclePhaseGoal
      * 使用maven构建项目就是按顺序执行一系列Phase
      * 执行Lifecycle就是按顺序执行一系列Phase
      * 每执行一个Phase,都会执行该Phase绑定的若干Goal
      * Goal是最小执行任务单元
    • 常用的命令:mvn clean test(打出的jar包不会包含依赖)
  • 相关阅读:
    HTML学习记录之HTML组成原理 PHP学习铺垫
    最长上升子序列(Longest increasing subsequence)
    进程保护(二)
    进程保护(一)
    屏幕广播的实现(三)
    vs2010 调试快捷键
    [整理]C#.Net的常见面试试题附答案(ZT)
    C# 中处理字符串常用的函数及方法详细说明
    Linux 系统下 /etc/group 档案结构
    C# Thread 多种写法总结
  • 原文地址:https://www.cnblogs.com/csj2018/p/11061820.html
Copyright © 2011-2022 走看看