mvn release:执行失败,因为pom文件不在存储库的根目录下

And*_*erg 7 maven maven-release-plugin maven-scm-plugin

我正在尝试执行mvn release:perform,但该命令假定pom文件位于存储库的根目录.是否有我可以设置的系统属性或首选项来覆盖默认值?

调用mvn release:prepare似乎已成功,因为所有发布工件都位于目标目录中,并且存储库已正确标记.

如果重要,这是一个git项目.


编辑这是我做的:

cd /path/to/git/root/path/to/mvn/project
mvn -DdevelopmentVersion=1.2.0-SNAPSHOT -DreleaseVersion=1.1.0 release:prepare
...enter correct passphrase and choose all default options...
mvn release:perform
Run Code Online (Sandbox Code Playgroud)

然后克隆target/checkout目录中的远程仓库,并在一些搅拌并推送到远程git仓库后,发生以下错误:

[ERROR]   
[ERROR]   The project  (/path/to/git/root/path/to/mvn/project/target/checkout/pom.xml) has 1 error
[ERROR]     Non-readable POM /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml: /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

因此,maven正在target/checkout目录的根目录中寻找pom文件,而不是它所在的位置.

Fed*_*dy2 7

我有同样的问题.把它添加到你的pom:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.1</version>
  <executions>
    <execution>
        <id>default</id>
        <goals>
            <goal>perform</goal>
        </goals>
        <configuration>
            <pomFileName>subdir/pom.xml</pomFileName>
        </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

资料来源:https://stackoverflow.com/a/8233712/555220


Kei*_*ith 0

由于根 pom 实际上不在源代码管理中,我认为release:prepare 和release:perform 不会为您工作。我认为这些命令的目标之一是确保发布的项目可以基于源代码控制而不是一个人的机器上的内容来构建(并通过测试)。这就是它尝试签出和重建的原因。如果 pom 根本不在源代码控制中,那么这个目标是不可能实现的。您可能必须手动执行release:prepare和release:perform执行的步骤:删除快照、提交、标记、mvn部署、增量版本添加快照、提交。

  • 我认为您误解了我上面的评论。pom 受源代码控制。它只是不在源代码管理的根目录中。 (2认同)