2009-12-10 98 views
2

我想为一个简单的项目创建一个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

我不知道你的问题到底是什么(是你的证书XML文件?),但我的猜测是,它是关系到大部分的原型的非二进制内容由速度创建过程中处理(事实关于这个问题见ARCHETYPE-90)。

一种解决方法是在默认情况下使用配置create-from-project魔力有文件未经过滤:

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

它集扩展,将被过滤,默认值为包含文件javaxmltxtvmgroovyjsp,gsp,vmproperties。因此,如果您不希望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> 

对原型元数据的更多详情,请参阅this page

3

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

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

相关问题