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

  • 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等。

posted @ 2024-09-07 17:42  jackieathome  阅读(20)  评论(0编辑  收藏  举报