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

时间:2009-12-10 05:09:33

标签: maven-2 maven archetypes

我正在尝试为一个简单的项目创建一个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中。有什么想法吗?

2 个答案:

答案 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,...

它设置要过滤的文件的扩展名,默认值包括javaxmltxtvmgroovy,{{ 1}},jspgspvm。因此,如果您不希望过滤properties,请从此列表中排除xml

另一种选择是为您的原型指定自定义元数据,如xml中所示:

src/main/resources/META-INF/maven/archetype-metadata.xml

有关原型元数据的更多详细信息,请参阅this page