Maven在现有目录中生成achetype

6kkfgxo0  于 2023-11-17  发布在  Maven
关注(0)|答案(4)|浏览(104)

我试图用一个现有的目录创建一个空的Maven Web项目(实际上是从 github 项目,它是空的,只包含 README 文件)。
但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

fdbelqdn

fdbelqdn1#

quickstart原型可以很好地处理这个问题,它给出一个警告,然后在一个现有目录(即与artifactId相同)中创建pom.xml和maven src/目录结构。
必须从PANOW目录运行。

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

字符串

wgeznvg7

wgeznvg72#

由于该目录已经存在,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>必须更新为 loms(注意,我将使用命令行,但您可以使用任何可视化工具来更新文件):
vi pom.xml

  • 删除artifactId中的 -2 后缀,使其匹配 loms
  • loms-2/ 目录下的所有文件/文件夹复制到项目目录 loms/
  • 现在你已经初始化了你的项目。
xurqigkl

xurqigkl3#

今天我尝试了同样的方法,我发现下面的方法对我的用例很有效,其中a)远程仓库总是用一个只包含一个基本README.mdmain分支创建的,b)我们对所有事情都使用PR,甚至是第一次实际提交。
在使用原型创建文件夹之后,我在新创建的文件夹中执行了以下命令:

git init
git remote add origin <url>
git fetch origin
git branch -m feature/setup
git add .
git commit -m "Initial setup"
git rebase -Xtheirs origin/main

字符串

  • 前两个命令很简单,在推送到空的远程存储库时使用。
  • 提取操作将检索对origin/main的引用。
  • 如果master是一个有效的名称,那么重命名对您来说可能是不必要的。如果远程分支也被称为master,我不知道这是如何工作的。
  • add和commit也很简单。
  • 重定基解决了冲突,有利于新创建的分支,换句话说,原型创建的分支。

在此之后,我可以添加更多的提交,或推送,让PR按原样完成。

klr1opcd

klr1opcd4#

如果您添加archetypeGroupId属性,您的调用将成功而不会出现错误。

mkdir loms
echo hi >loms/README.md
mvn archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DarchetypeArtifactId=maven-archetype-webapp \
  -DgroupId=org.reaver.devs -DartifactId=loms \
  -DinteractiveMode=false
tree loms

字符串
测试结果:

loms
├── pom.xml
├── README.md
└── src
    └── main
        └── webapp
            ├── index.jsp
            └── WEB-INF
                └── web.xml

相关问题