我有一个关于 Maven、maven-release-plugin、git 集成、pom.xml 以及在 repo 本地副本的子目录中而不是在根目录中的 pom.xml 的问题。
这是设置:
- 我有一个私人存储库数量有限的 github 帐户
- 我想(正在学习)使用 Maven 来组织我的构建/发布
- 我可能需要创建许多 Maven “项目”,每个 git 存储库有几个项目
- 每个 maven 项目都需要一个“pom.xml”来定义它的特性
- 我不能,或者至少不方便,将所有项目 pom.xml 文件放在 git 存储库的根目录中
- 所以我最终得到了这个项目的文件夹布局:
- git_repo_root_dir
- project_A文件夹
- pom.xml
- 其他代码
- project_B文件夹
- pom.xml
- 其他代码
- 等等
- ...
- project_A文件夹
- git_repo_root_dir
- 我可以成功进入目录 git_repo_root_dir/project_A 并执行“mvn release:prepare”
- 我在 git_repo_root_dir/project_A 中的这一步失败了:“mvn release:perform”
- 问题似乎是 git-tagged 代码已成功签出到 git_repo_root_dir/project_A/target/checkout/project_A 以准备发布构建,但是在签出之后“maven-release”插件进入目录 git_repo_root_dir/project_A /目标/结帐/。而不是 git_repo_root_dir/project_A/target/checkout/project_A/。进行实际构建,并且在尝试弄乱 pom.xml 之前,无法告诉“maven-release”插件进入源的特殊标记副本的子目录
- 问题:有没有办法解决这个问题?是否可以选择以某种方式告诉“mvn release:perform”转到子目录?
这是我在此过程中遇到的实际错误:
[INFO] --- maven-release-plugin:2.0:perform (default-cli) @ standard_parent_project ---
[INFO] Checking out the project to perform the release ...
[INFO] Executing: /bin/sh -c cd "/Users/___/DEV c8ion 01/maven_based_code/0maven/standard_parent_project/target" && git clone git@github.com:clarafaction/0maven.git '/Users/___/DEV c8ion 01/maven_based_code/0maven/standard_parent_project/target/checkout'
...
/* note, the pom.xml the build should go out of at this point is at
'/Users/___/DEV c8ion 01/maven_based_code/0maven/standard_parent_project/target/checkout/standard_parent_project/pom.xml'
*/
...
[INFO] [ERROR] The goal you specified requires a project to execute but
there is no POM in this directory
(/Users/___/DEV c8ion 01/maven_based_code/0maven/standard_parent_project/target/checkout).
Please verify you invoked Maven from the correct directory. -> [Help 1]
谢谢。