Maven 2 从原型创建项目时,如何抑制属性替换?

Maven 2 从原型创建项目时,如何抑制属性替换?,maven-2,maven,archetypes,Maven 2,Maven,Archetypes,我正在尝试为一个简单的项目创建一个archtype,这个项目包含一些ssl证书,我想将它们作为资源包含在archtype中,因此当项目被创建时,这些证书将成为项目的一部分。我的问题是,maven在创建具有原型的项目时,试图对这些证书进行属性替换。有没有办法告诉maven不要换房子? 我已经尝试了以下方法: <resources> <resource> <directory>src/main/resources</directory&g

我正在尝试为一个简单的项目创建一个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>

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},而不是运行原型的目录