如果我使用pom.xml
<scm>
<developerConnection>scm:git:username@hostname:/absolute/path/to/repo.git</developerConnection>
</scm>
并在像
这样的命令中使用它mvn --batch-mode release:prepare -Dtag=whatever -DreleaseVersion=3.0 -DdevelopmentVersion=4.0-SNAPSHOT
然后我得到像
这样的错误[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project maven_dependencies: Unable to tag SCM
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] fatal: 'hostname/absolute/path/to/repo.git' does not appear to be a git repository
[ERROR] fatal: Could not read from remote repository.
注意: hostname
中的/absolute/path/to/repo.git
和pom.xml
之间的分号在错误输出中消失了!
绝对与相对路径
实际上,我可以在SSH URL中使用带有非绝对路径的Git(相对于usernname
的主目录)。例如,使用
scm:git:username@hostname:path/to/repo.git
而不是
scm:git:username@hostname:/home/username/path/to/repo.git
完美无缺。
官方文档
我已经为Git阅读了official Maven Release documentation,因为标准的类似SSH的URL至少在相对路径的情况下已经起作用,我故意忽略了它奇怪的URL规范:
scm:git:ssh://username@hostname[:port]/~/path/to/repository
反叛并忽略此语法的原因是无法暗示相对于用户主页的路径(如果路径不以/
开头,则默认情况下SSH会执行此操作)。此外,标准类似SSH的:
之后的冒号hostname
是hostname
和路径(不端口号)之间的分隔符!
这意味着必须为Maven Release插件专门重新格式化SSH的Git URL - 真是令人头疼!