首页 > 解决方案 > 如何在 Maven 中为 scm:checkin 目标使用 basedir 和 workingDirectory 参数?

问题描述

我对 Maven 很陌生,我对 Maven SCM 插件的basedir和参数的用途和正确用法感到困惑。workingDirectory假设我有以下文件/文件夹结构(在 Windows 中):

C:\fruits\
├───.git\
├───apples\
│   └───pom.xml
└───oranges\
    └───pom.xml

在执行 Maven 之前(通过mvn.cmd从命令行调用),我将shell 中的当前目录C:\fruits\apples更改为“ ”。因此,在 Maven 的术语中,“ C:\fruits\apples”成为工作目录pom.xml,其中包含用于项目的适当文件apples。另一方面,在 Git 的术语中,工作目录是“ C:\fruits”,因为那是整个 monorepo 分支被检出的地方。

在构建过程中的某个时刻,我使用 Maven SCM 插件推送一些修改。目前,在指定scm:checkin目标时,我提供了--define workingDirectory="C:\fruits",但我不确定这是否是正确的路径。此外,即使我目前根本没有定义basedir参数,该插件似乎也可以工作,这令人惊讶,因为文档basedir其列为唯一必需的参数。不幸的是,文档没有解释basedir参数的目的(他们只是说它是“基本目录”,duh),也没有解释哪个“工作目录”(即,无论是在 Git 的意义上还是在 Maven 的意义上)workingDirectory参数应该指向。

您能否向我解释一下,我应该定义 SCM 插件的哪些路径basedirworkingDirectory参数指向(当 Maven 正在处理我的apples项目时)以及为什么?

标签: mavenmaven-scm

解决方案


working directorySCM 插件的参数在 Git 的上下文中,即 .git 文件夹的位置

basedir是 pom.xml 所在位置的目录。Maven 有许多默认属性,其中之一是basedir.

要了解有关它如何实现的更多信息,您还可以从 maven Central 查看此插件的代码或查看您的本地 maven repo。


推荐阅读