我正在尝试构建一个这样的原型结构,一个带有一些Web框架自定义文件夹的webapp。特别是一些动态文件夹,它们也包含原型带来的一些文件。
└───src
└───main
└───webapp
└───WEB-INF
├───cfg
│ ├───log4j
│ └───resources
│ └───extensions
│ ├───${shortName}-business
│ └───${shortName}-layout
└───lib
我在archetype-metadata.xml
添加了一个必需的属性,以便为项目创建一个简短名称,用于生成唯一文件夹。
<requiredProperties>
<requiredProperty key="shortName" />
</requiredProperties>
我在shortName
中使用的属性fileSet
:
<fileSet>
<directory>[..]/resources/extensions/${shortName}-business</directory>
</fileSet>
<fileSet>
<directory>[..]/resources/extensions/${shortName}-layout</directory>
</fileSet>
生成原型的命令:
mvn archetype:generate -B \
-DgroupId=com.stackoverflow \
-DartifactId=stackoverflow-question -DarchetypeGroupId=com.stackoverflow \
-DarchetypeArtifactId=stackoverflow-archetype -DarchetypeVersion=1.0 \
-DshortName=soq
我假设获得以下文件夹结构:
..\
├───soq-business
└───soq-layout
但是我将此名称${shortName}-business
作为文件夹,而不是将其替换为属性。
..\
├───${shortName}-business
└───${shortName}-layout
我怎样才能做到这一点?如何在不知道文件夹名称的情况下将文件放在soq-business
下面?
答案 0 :(得分:19)
我今天想到了完全相同的问题......
我发现Adam Leggett的一些博客文章描述了在路径中使用占位符:看看https://mikeciblogs.wordpress.com/2010/01/14/working-with-custom-maven-archetypes-part-1/(步骤4)。
诀窍似乎是使用加倍的下划线而不是花括号语法,因此${shortName}
变为__shortName__
。
但是,我还没有尝试过这个解决方案。如果您这样做,请告知我们是否有效。谢谢!
HTH!
答案 1 :(得分:4)
正如Vivian所指出的那样,我的博客文章提供了一些如何做到这一点的提示。 但是,需要注意的一件事(博客中未明确提到)是此功能仅适用于原型插件2.x