Name the root directory of project generated with Maven Archetype

↘锁芯ラ 提交于 2021-02-08 01:49:07

问题


How can I control the name of the top directory of the maven module created by my maven archetype? Currently it creates a new folder named$artifactId. Or even more directly, is there a way that my archetype can create a folder named after the module's artifactId, but with dashes replaced by underscores?


回答1:


The naming convention for artifactId's is to use dashes (hyphens). I don't think there is any way to make the module's directory named something other than the artifactId. That being said, it is onlvy convention, not a requirement, that your module be named the same as your artifactId. This means that after your project is generated, you could simply change either the artifactId or module folder name or both to whatever you want.




回答2:


I got round this by adding a second required property to the archetype, and then using that in place of artifactId within the generated pom etc.

In archtype-metadata.xml:

<requiredProperties>
...
  <requiredProperty key="projectCode"/>
</requiredProperties>

In pom.xml (and other substitutions):

<artifactId>${projectCode}</artifactId>

So the folder gets the name supplied for artifactId, but in the pom it is given the name supplied for projectCode.

Unfortunately you don't seem to be able to supply a default value for artifactId within archtype-metadata.xml (I always want the folder name to be the same).




回答3:


You can rename root folder by making an archetype-post-generate groovy script like :

import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths

Path projectPath = Paths.get(request.outputDirectory, request.artifactId)
// RENAME ROOT FOLDER INCLUDING A PREFIX FOR EXAMPLE
Files.move(projectPath, projectPath.resolveSibling("prefix-" + projectPath.toFile().getName()))


来源:https://stackoverflow.com/questions/4333568/name-the-root-directory-of-project-generated-with-maven-archetype

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!