I have a question about Maven, the maven-release-plugin, git integration, pom.xml's, and having pom.xml's in subdirectories of the repo's local copy rather than in the root.
Here's the setup:
- I have a github account with a limited number of private repositories
- I want to (am just learning to) use Maven to organize my builds/releases
- I might need to create many Maven "projects", several projects per git repository
- Each maven project requires a "pom.xml" to define its characteristics
- I can't, or at least it's not convenient to, put all project pom.xml files in the root of the git repository
- So I end up with this folder layout for projects:
- git_repo_root_dir
- project_A folder
- pom.xml
- other_code
- project_B folder
- pom.xml
- other_code
- etc.
- ...
- project_A folder
- git_repo_root_dir
- I can successfully go to directory git_repo_root_dir/project_A and do an "mvn release:prepare"
- I fail with this step in git_repo_root_dir/project_A: "mvn release:perform"
- The problem seems to be that the git-tagged code is successfully checked out to git_repo_root_dir/project_A/target/checkout/project_A in preparation for the release build, but then after the checkout the "maven-release" plugin goes to directory git_repo_root_dir/project_A/target/checkout/. instead of git_repo_root_dir/project_A/target/checkout/project_A/. to do the actual build, and there's no way to tell the "maven-release" plugin to step into a subdirectory of the special tagged copy of the source before trying to mess with the pom.xml
- QUESTION: is there a way around this? Is there an option to somehow tell "mvn release:perform" to go to the subdirectory?
Here's the actual error I get during this process:
[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]
Thanks.