首页 > 其他分享 >Maven快速上手使用指南的笔记

Maven快速上手使用指南的笔记

时间:2024-09-07 17:35:46浏览次数:4  
标签:maven 插件 plugin 笔记 Maven 构建 使用指南 Guide

  • Maven Mini Guides

  • Configuring for Reproducible Builds
    使用Maven实现重复构建。
    检查当前使用的插件的版本。

    mvn artifact:check-buildplan
    

    修改pom.xml,增加如下配置,显式指定project.build.outputTimestamp的取值:

      <properties>
        <project.build.outputTimestamp>2023-01-01T00:00:00Z</project.build.outputTimestamp>
      </properties>
    

    执行完整构建,执行如下命令:

    mvn clean install
    

    再次执行构建,同时比较二进制是否一致,执行如下命令:

    mvn clean verify artifact:compare
    
  • Guide to creating assemblies
    使用maven-assembly-plugin,可以指定构建目标文件的文件布局和格式。
    修改项目的pom.xml,增加插件的配置,内容样例如下:

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/dep.xml</descriptor>
              </descriptors>
            </configuration>
            <executions>
              <execution>
                <id>create-archive</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    

    在项目路径${project.basedir}/src/assembly下放置布局文件,以上述配置为例,布局文件为dep.xml,内容样例,如下:

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
      <id>bin</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>README*</include>
            <include>LICENSE*</include>
            <include>NOTICE*</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>*.jar</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}/site</directory>
          <outputDirectory>docs</outputDirectory>
        </fileSet>
      </fileSets>
    </assembly>
    

    执行构建,命令如下,即可观察效果。

    mvn package
    
  • Guide to Configuring Archive Plugins
    对于常规的jar/war/ejb/ear/assembly插件,默认情况下,在构建结果文件中增加目录META-INF/maven,包含文件pom.xmlpom.properties
    通过修改archive的配置,可以关闭前述默认行为,样例如下:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>
        </plugins>
      </build>
      ...
    </project>
    
  • Configuring Maven
    常见的配置,比如:

    • 本地仓库的路径。
    • 通过代理,下载依赖软件。
    • 下载依赖软件时的并行度。
    • 上传构建目标文件时,增加安全性。
    • 远程仓库的配置,比如镜像。
    • 构建场景的配置。
    • 构建工具链的配置。
  • Guide to generating sources
    对于参与generate-sources阶段的插件,构建时会自动生成代码,如下是插件antlr4-maven-plugin的样例配置:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-maven-plugin</artifactId>
            <version>4.5.3</version>
            <executions>
              <execution>
                <id>antlr</id>
                <goals>
                  <goal>antlr4</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      ...
    </project>
    

    插件生成的代码,可参与后续的compile阶段。

  • Guide to Working with Manifests
    可参考Apache Maven Archiver

  • Guide to Maven Classloading
    Maven工具在运行过程中涉及到的类加载器,以及各自的用途。

  • Guide to Working with Multiple Modules
    对于多个模块组成的项目,Maven 3.X版本的工作流程。

  • Guide to Working with Multiple Modules in Maven 4
    对于多个模块组成的项目,Maven 4.X版本的工作流程。

  • Releasing
    目前在项目中没有使用过。

  • Guide to using Ant with Maven
    借助于插件maven-antrun-plugin,在构建过程中,可以定制shell脚本,定制构建行为。
    如下是样例,在generate-sources阶段调用脚本${project.basedir}/src/main/sh/do-something.sh

    <project>
      <modelVersion>4.0.0</modelVersion>
      <artifactId>my-test-app</artifactId>
      <groupId>my-test-group</groupId>
      <version>1.0-SNAPSHOT</version>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <phase>generate-sources</phase>
                <configuration>
                  <tasks>
                    <exec
                      dir="${project.basedir}"
                      executable="${project.basedir}/src/main/sh/do-something.sh"
                      failonerror="true">
                      <arg line="arg1 arg2 arg3 arg4" />
                    </exec>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </project>
    
  • Guide to using Modello
    Modello的介绍,如下:

    在项目中没有使用过。

  • Using Extensions
    自定义扩展,修改Maven的行为。

  • Building For Different Environments
    利用profile,针对不同的构建场景,比如可定义不同的插件和参数。

  • Guide to Using Toolchains
    构建项目时,通过使用Toolchains,构建项目时使用不同于运行Maven的JDK等。

标签:maven,插件,plugin,笔记,Maven,构建,使用指南,Guide
From: https://www.cnblogs.com/jackieathome/p/18401959

相关文章

  • 【笔记】【THM】Phishing(网络钓鱼)(这个模块还没学完)
    【笔记】【THM】Phishing(网络钓鱼)了解如何分析和防御网络钓鱼电子邮件。使用各种技术调查现实世界的网络钓鱼尝试。在本模块中,您将学习如何动手分析各种网络钓鱼攻击。从检查电子邮件的源属性到查看恶意网络钓鱼附件,您将调查行业中攻击的真实示例。您还将了解攻击者如何发起网络......
  • maven笔记
    1、依赖范围【scope】:编译环境(main文件夹)、测试环境(test文件夹)、运行环境(打成的war包是否可用)compile:测试依赖范围,缺省值上面的三个环境都可用,如log4j。test:只争对测试classpath有效,如junit。provided:只对编译环境和测试环境有效,运行阶段外部容器已提供,故不需要额......
  • 【人工智能学习笔记】1_人工智能基础
    本系列是个人学习《阿里云人工智能工程师ACA认证免费课程(2023版)》的笔记,仅为个人学习记录,欢迎交流,感谢批评指正人工智能概述智能的三大能力:感知、记忆与思维、学习与适应能力人工智能的定义明斯基:“人工智能是一门科学,是使机器做那些人需要通过智能来做的事情”尼尔森......
  • GenRec论文阅读笔记
    GenRec:LargeLanguageModelforGenerativeRecommendation论文阅读笔记Abstract​ 本文提出了一种使用大型语言模型(LLM)的创新推荐系统方法,该方法纯粹基于原始文本数据,即使用项目名称或标题作为项目ID,而不是创建精心设计的用户或项目ID。更具体地说,我们提出了一种新颖的用......
  • Linux shell编程学习笔记77:tar命令——快照 & 备份(下)
     0 前言在Linuxshell编程学习笔记76:tar命令——快照&备份(上)中我们研究了 tar命令 的功能、格式、选项说明。现在我们来实践一下。1 应用实例1.1 创建演示文件和目录我们使用echo 命令和输出重定向创建文件f1 和f2,使用mkdir命令创建目录d1[purpleendurer@bash~]e......
  • Linux shell编程学习笔记76:tar命令——快照 & 备份(上)
    0 前言提取系统快照和备份文件都是我们的日常工作。在Windows中,我们可以创建系统还原点,在需要的时候可以把系统还原回去。在Linux中,我们可以使用tar命令来实现。1tar命令的功能,帮助信息,格式,选项和参数说明1.1 tar命令的功能tar名字来自"tapearchive"(磁带归档),最初用于将文件......
  • java入门笔记2(类和对象到接口)
    类和对象最简单的类packagestudy;publicclasstest1{publicintbrand;publicStringname;publicvoidread(){System.out.println(brand+"book");}publicvoideat(inta){System.out.println(name+"eat&quo......
  • 线性基学习笔记
    1.线性基的本质线性基的本质就是空间上的一组向量可以用线性变换表示出所有向量。OI中常见的主要是异或线性基,就是用若干个数表示一组数的异或和的空间。2.异或线性基2.1插入线性基的构建本质上类似高斯消元。我们设\(b_i\)表示主元是\(i\)的数,对于一个线性基加入一......
  • 【内网渗透】最保姆级的春秋云镜Exchange打靶笔记
    目录flag1flag2flag3 flag4flag1fscan扫外网访问8000端口->官方网站 Java代码审计之华夏ERPCMSv2.3|Drunkbaby'sBlogadmin/123456弱口令打/user/list?search=的jdbc+fj反序列化vps搭一个MySQL_Fake_Serverpayload:/user/list?search=%7b%20%22%6e%6......
  • prometheus学习笔记之kube-state-metrics
    一、kube-state-metrics简介Kube-state-metrics:通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,......