3

我正在尝试为一个简单的项目创建一个架构类型,该项目包含一些我想作为资源包含在架构类型中的 ssl 证书,因此当创建项目时,这些证书将成为项目的一部分。我的问题是,在使用原型创建项目时,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 中。有任何想法吗?

4

2 回答 2

6

我在尝试在 archetype-resources/pom.xml 中使用 ${basedir} 时遇到了类似的问题,但是当原型运行以创建项目并因此指向错误的目录时,它被替换了。

修复很简单。只需使用 \${basedir} 代替。这会转义 $ 符号并防止 maven 在运行原型时替换它。然后您生成的 pom.xml 文件将包含 ${basedir} 而不是原型运行的目录。

于 2014-06-01T02:10:50.280 回答
2

我不确定你的问题到底是什么(你的证书是 xml 文件吗??)但我的猜测是它与原型的大多数非二进制内容在创建过程中由速度处理的事实有关(参见ARCHETYPE-90关于这个问题)。

一种解决方法是将create-from-project mojo 配置为默认情况下不过滤文件:

-Darchetype.filteredExtentions=ext1,ext2,...

它设置将被过滤的文件的扩展名,默认值包括java, xml, txt, vm, groovy, jsp,gsp和. 因此,如果您不想被过滤,请从此列表中排除。vmpropertiesxmlxml

另一种选择是为您的原型指定自定义元数据,如下所示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>

有关原型元数据的更多详细信息,请参阅此页面

于 2009-12-10T12:35:43.447 回答