2012-08-30 26 views
2

我想將參數傳遞給archetype-resources> src>主文件夾中的文件。 所以我宣佈原型-metadata.xml中所需的財產如何在maven原型中生成動態文件?

<requiredProperties> 
    <requiredProperty key="myParam"> 
     <defaultValue>default-value</defaultValue> 
    </requiredProperty> 
    </requiredProperties> 

,並在原型文件中使用$ {} myParam,但不更換它的價值。爲什麼?

如果我在原型項目的pom.xml中使用自定義值,則生成的項目將使用myValue替換$ {myParam}的值。它工作正常,但對原型文件夾中的文件不起作用。爲什麼?

回答

3

您需要告訴Velocity引擎您的文件應該用作Velocity模板(以便它實際上會替換它在文件中找到的任何屬性)。您可以通過擴展archetype-metadata.xml文件並定義fileSet來做到這一點。

我不知道你的確切文件夾結構,哪些有問題的文件的名稱是,但這些方針的東西應該工作:

<?xml version="1.0" encoding="UTF-8"?> 
<archetype-descriptor name="basic"> 
    <requiredProperties> 
     <requiredProperty key="myParam"> 
      <defaultValue>default-value</defaultValue> 
     </requiredProperty> 
    </requiredProperties> 
    <fileSets> 
     <fileSet filtered="true" packaged="false"> 
      <directory>src/main</directory> 
      <includes> 
       <include>**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</archetype-descriptor> 

基本上上面是告訴它包含的所有文件根據src/main和重要部分是filtered=true這將導致所有屬性被替換。

+0

謝謝。 我缺少filtered =「true」聲明。 – Deepali

+0

@Deepali,你應該接受答案。 –