Maven 2 从原型创建项目时,如何抑制属性替换?
我正在尝试为一个简单的项目创建一个archtype,这个项目包含一些ssl证书,我想将它们作为资源包含在archtype中,因此当项目被创建时,这些证书将成为项目的一部分。我的问题是,maven在创建具有原型的项目时,试图对这些证书进行属性替换。有没有办法告诉maven不要换房子? 我已经尝试了以下方法:Maven 2 从原型创建项目时,如何抑制属性替换?,maven-2,maven,archetypes,Maven 2,Maven,Archetypes,我正在尝试为一个简单的项目创建一个archtype,这个项目包含一些ssl证书,我想将它们作为资源包含在archtype中,因此当项目被创建时,这些证书将成为项目的一部分。我的问题是,maven在创建具有原型的项目时,试图对这些证书进行属性替换。有没有办法告诉maven不要换房子? 我已经尝试了以下方法: <resources> <resource> <directory>src/main/resources</directory&g
<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>
src/main/resources
真的
**/*.xml
src/main/resources
假的
**/*.xml
在我的原型POM.xml中。有什么想法吗?我不确定您的问题到底是什么(您的证书是xml文件吗??),但我猜这与以下事实有关:原型的大多数非二进制内容都是由velocity在创建过程中处理的(请参阅关于此问题) 一种解决方法是使用以下方法将mojo配置为默认情况下未过滤文件:
-Darchetype.filteredExtentions=ext1,ext2,...
它为将被过滤的文件设置扩展名,默认值包括java
,xml
,txt
,vm
,groovy
,jsp
,gsp
,vm
和properties
。因此,如果您不想筛选xml
,请将xml
从该列表中排除
另一个选项是为原型指定自定义元数据,类似于src/main/resources/META-INF/maven/archetype metadata.xml中的内容:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="myarchetype">
<fileSets>
<fileSet filtered="false" encoding="UTF-8">
<directory>src/foobar</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
有关原型元数据的更多详细信息。我尝试在archetype resources/pom.xml中使用${basedir}时遇到类似问题,但当原型运行以创建项目时,它被替换,因此指向了错误的目录
解决办法很简单。只需使用\${basedir}即可。这将跳过$符号,并防止maven在运行原型时替换它。然后,生成的pom.xml文件将包含${basedir},而不是运行原型的目录