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 @   jackieathome  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示