我正在尝试为一个简单的项目创建一个archtype,这个项目包含一些ssl证书,我想将它们作为archtype中的资源包含在内,因此当项目被创建时,这些证书将成为项目的一部分。我的问题是,当使用原型创建项目时,maven正在尝试对这些证书进行属性替换。有没有告诉maven不要做房产更换? 我已经尝试了以下内容:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
在我的原型POM.xml中。有什么想法吗?
答案 0 :(得分:4)
我在archetype-resources / pom.xml中尝试使用$ {basedir}时遇到了类似的问题,但是当原型运行以创建项目并因此指向错误的目录时,它正被替换。
修复很简单。只需使用\ $ {basedir}。这会转义$符号并阻止maven在运行原型时替换它。然后,生成的pom.xml文件将包含$ {basedir},而不是原型运行的目录。
答案 1 :(得分:2)
我不确定你的问题究竟是什么(你的证书是xml文件吗?)但我的猜测是,这与原型的大多数非二进制内容在创建过程中由速度处理有关(参见ARCHETYPE-90关于这个问题。)
解决方法是将create-from-project mojo配置为默认使用以下文件进行过滤:
-Darchetype.filteredExtentions=ext1,ext2,...
它设置要过滤的文件的扩展名,默认值包括java
,xml
,txt
,vm
,groovy
,{{ 1}},jsp
,gsp
和vm
。因此,如果您不希望过滤properties
,请从此列表中排除xml
。
另一种选择是为您的原型指定自定义元数据,如xml
中所示:
src/main/resources/META-INF/maven/archetype-metadata.xml
有关原型元数据的更多详细信息,请参阅this page。