有没有一种方法可以运行"mvn archetype:generate"并以当前目录为目标,而不是从artifactId创建一个目录?插件据说可以使用 basedir参数,但是传入"-Dbasedir=."并不能解决问题。
额外的背景信息是,我设置了2个Git仓库。第一个包含用于生成自定义Web服务的Maven原型的源代码,第二个是从原型生成的示例服务。我有一个Jenkins作业,通过基本上只运行“mvn clean install”来构建我的原型。我正在尝试设置第二个Jenkins作业作为我们的CI工作流程的一部分,使用"mvn archetype:generate"生成测试服务,使用"mvn clean install"构建服务,启动服务,运行一些集成测试,然后如果测试通过,则将测试服务的源代码推送到第二个存储库中。两个Jenkins作业都使用Maven 2/3构建 job type,我已在作业配置的SCM部分指定了我们的Git存储库信息,因此作业从“git clone”开始。
这个 hack 的存在是因为我不确定如何告诉原型插件使用当前目录而不是创建一个名为 artifactId 的嵌套目录,所以我必须将所有内容移回到本地仓库根目录并删除所创建的目录。虽然不是世界末日,但感觉很丑陋。请注意,除了对我的初始问题的答案之外,我也乐意听取更好地实现我的总体目标的建议。:) 预先感谢!
额外的背景信息是,我设置了2个Git仓库。第一个包含用于生成自定义Web服务的Maven原型的源代码,第二个是从原型生成的示例服务。我有一个Jenkins作业,通过基本上只运行“mvn clean install”来构建我的原型。我正在尝试设置第二个Jenkins作业作为我们的CI工作流程的一部分,使用"mvn archetype:generate"生成测试服务,使用"mvn clean install"构建服务,启动服务,运行一些集成测试,然后如果测试通过,则将测试服务的源代码推送到第二个存储库中。两个Jenkins作业都使用Maven 2/3构建 job type,我已在作业配置的SCM部分指定了我们的Git存储库信息,因此作业从“git clone”开始。
对于第二个工作,我的当前工作流程如下:
// Clean out the existing source and commit locally.
git rm -r .
git commit -m "Cleaning out previous version." .
// Generate the new source from the archetype.
mvn archetype:generate ...
// Big hack that I'd like to remove.
mv <artifactId>/* .
rm -rf <artifactId>
// Add the new generated source and commit locally.
git add -A .
git commit -m "Committing new version." .
// Build and test.
mvn integration-test
// Assuming that passed, commit the changes.
git push origin master
这个 hack 的存在是因为我不确定如何告诉原型插件使用当前目录而不是创建一个名为 artifactId 的嵌套目录,所以我必须将所有内容移回到本地仓库根目录并删除所创建的目录。虽然不是世界末日,但感觉很丑陋。请注意,除了对我的初始问题的答案之外,我也乐意听取更好地实现我的总体目标的建议。:) 预先感谢!
-DartifactId=${PWD##*/}
与-DoutputDirectory=../
配对使用非常好,就像注意事项中所说的那样,你的构件名称必须与当前目录相同。 - RH Becker