• Maven默认周期与插件


    运行 cmd

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
     image 
    这个archetype(模板)是一个插件,generate是目标指令(goal)
    插件就是集成了若干个goal的合集
     
    Maven标准的项目结构:

    src/main/java

    源代码

    src/main/resources

    资源文件

    src/main/filters

    资源过滤

    src/main/config

    配置文件

    src/main/scripts

    脚本

    src/main/webapp

    Web程序源代码

    src/test/java

    测试的源代码

    src/test/resources

    测试的资源

    src/test/filters

    测试的资源过滤

    src/it

    集成测试(主要用于插件)

    src/assembly

    Assembly descriptors

    src/site

    自动生成的网站

     
    生成后在根目录会有个pom.xml,然后是src和target文件夹:
    <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.mycompany.app</groupId> 包名
      <artifactId>my-app</artifactId> 项目名,也用于生成的jar包名
      <packaging>jar</packaging> 默认为jar,后面详述
      <version>1.0-SNAPSHOT</version> 版本
      <name>my-app</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>
    </project>

    构建:

    mvn package
    image 
    这个package是自带命令,是default构建周期的一个步骤
    比如运行compile,会自动按以下顺序执行:
    1. validate
    2. generate-sources
    3. process-sources
    4. generate-resources
    5. process-resources
    6. compile
     
    可以测试一下:
    java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
    image 
     
    关于构建周期:有三个是内置的,default(默认), clean(清理target文件夹) , site(生成站点文档)
     
    每个周期都是由不同步骤组成,比如default就包括了:
    • validate - 校验
    • compile -编译
    • test - 单元测试
    • package - 打包成jar或war等
    • integration-test - 集成测试
    • verify - 校验
    • install -部署到本地代码库,供其他项目本地调用
    • deploy - 部署到远程代码库,供他人或项目远程调用

    下面的步骤总是会从顶部开始,按顺序执行

    同一个命令可以同时执行多个步骤,如

    mvn clean install 会先clean,再install
     
    一个插件的goal代表一个特定的任务,
    而某个步骤实际上是调用某个插件的goal,具体哪个goal跟项目本身有关
    所以,也可以在命令行直接执行插件goal,如:
    mvn dependency:copy-dependencies
    mvn archetype:generate
     
     
     
    一个周期步骤可以关联多个插件goal

    1.默认关联:通过指明pom.xml的packaging,默认为jar

    步骤

    插件goal

    process-resources

    resources:resources

    compile

    compiler:compile(插件可以有多个goal)

    process-test-resources

    resources:testResources

    test-compile

    compiler:testCompile(插件可以有多个goal)

    test

    surefire:test

    package

    jar:jar

    install

    install:install

    deploy

    deploy:deploy

    2.手动关联:通过pom.xml的plugins

    插件的goal本身都有个默认关联的步骤,但goal也可能关联到多个步骤,可以具体指定一个

    <build>
      <plugins>
     <plugin>
       <groupId>com.mycompany.example</groupId>
       <artifactId>display-maven-plugin</artifactId>
       <version>1.0</version>
       <executions>插件配置
         <execution>
           <phase>process-test-resources</phase>具体步骤
           <goals>
             <goal>time</goal>具体goal
           </goals>
         </execution>
       </executions>
     </plugin>  
      </plugins>
    </build>

    这个goal将附加到那个步骤的goal的后面执行,也可以自己指定顺序

    更详细的三个周期步骤,及相关goal对应表:

    Clean Lifecycle

    pre-clean

     

    clean

    构建的所有东西都被移除

    clean:clean

    post-clean

     

    Default Lifecycle

    validate

     

    initialize

    初始化,比如设环境变量,建文件夹

     

    generate-sources

     

    process-sources

     

    generate-resources

     

    process-resources

    resources:resources

    compile

    编译

    compiler:compile

    process-classes

    编译后处理

    plugin:descriptor

    generate-test-sources

     

    process-test-sources

    resources:testResources

    generate-test-resources

     

    process-test-resources

     

    test-compile

    测试的编译

    compiler:testCompile

    process-test-classes

     

    test

    surefire:test

    prepare-package

     

    package

    jar:jar and plugin:addPluginArtifactMetadata

    pre-integration-test

     

    integration-test

     

    post-integration-test

     

    verify

     

    install

    install:install

    deploy

    deploy:deploy

    Site Lifecycle

    pre-site

     

    site

    生成网站文档

    site:site

    post-site

     

    site-deploy

    site:deploy

    具体可以查看maven-core-3.2.5.jarMETA-INFplexus中的三个xml

  • 相关阅读:
    app 后端技术
    别为大公司拼命
    ifconfig 工具
    route工具
    ping 和 traceroute 命令
    IP路由选择
    TCP的那些事儿(下)
    TCP的那些事儿(上)
    Openresty 与 Tengine
    Excel.Application SaveAs 把excel转换为html
  • 原文地址:https://www.cnblogs.com/gcg0036/p/4149102.html
Copyright © 2020-2023  润新知