2009-12-10 35 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},而不是原型從中運行的目錄。

相關問題