Maven 在现有目录中生成原型
Posted
技术标签:
【中文标题】Maven 在现有目录中生成原型【英文标题】:Maven generate achetype in existed directory 【发布时间】:2014-10-25 08:32:08 【问题描述】:我正在尝试使用现有目录(实际上来自 github 项目,它是空的并且仅包含 README 文件)创建空的 Maven Web 项目。
但 maven 似乎检测到目录存在并失败并出现错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: Directory loms already exists - please run from a clean directory -> [Help 1]
是否有机会强制 maven 使用现有目录?
调用命令:
mvn archetype:generate -DgroupId=org.reaver.devs -DartifactId=loms -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
【问题讨论】:
为什么不在创建项目之前简单地删除该目录? @Seelenvirtuose 因为那个目录已经包含了.git
目录,我猜...
【参考方案1】:
由于该目录已经存在,maven 将无法生成另一个具有相同名称的工件项目。而且由于你的 loms 目录是一个 git 项目,并且不能删除它,你可以采取一个棘手的方法:
使用您想要的原型生成一个项目,但具有不同的工件名称(仅用作交换目录):
mvn archetype:generate -DgroupId=org.reaver.devs \
-DartifactId=loms-2 \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
上述命令将生成一个具有 maven 特性的新目录,它完全符合您对 loms 项目的期望,期待您的 pom.xml<artifactId> /em> 必须更新为 loms(请注意,我将使用命令行,但您可以使用任何可视化工具来更新文件):
vi pom.xml
删除artifactId
中的-2 后缀,使其匹配loms。
将loms-2/目录下的所有文件/文件夹复制到你的项目目录loms/。
现在您的项目已初始化。
【讨论】:
好吧,我知道一些棘手的方法。实际上,如果将已经存在的 dir 重命名为 temp-name 并创建 loms 项目,那么合并后您确实不需要正确的 pom.xml。但问题是如何在没有技巧、仰卧起坐、黑客攻击的情况下做到这一点。 maven 的一些选项。 那么Maven没有选项了。【参考方案2】:quickstart archetype 可以正常工作。它会发出警告,但随后会在现有目录(即与 artifactId 相同)内创建 pom.xml 和 maven src/
目录结构。
它必须从 PARENT 目录运行。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
【讨论】:
以上是关于Maven 在现有目录中生成原型的主要内容,如果未能解决你的问题,请参考以下文章