2013-10-24 52 views
1

說我有一個原型,我從它生成一個項目。但是我希望通過在命令行中傳遞佔位符的值來解決在生成後的項目的屬性文件中的佔位符。有沒有一種方法來後處理從原型生成的項目?

例如具有下面的命令行:

MVN原型:創建-DarchetypeGroupId = ... -DarchetypeArtifactId = ... -DarchetypeVersion = 1.0 -DgroupId = ... = -DartifactId我的項目-Dversion = 1.0-SNAPSHOT -Dhello =你好!

說原型包含以下內容app.properties(作爲正在生成的項目的一部分):

問候= $ {}你好

是否有可能取代$ {}打招呼與「你好!」在項目由於mvn archetype而生成後立即執行:create command?

回答

-1

不知道我理解正確。對於項目創建後的後期處理,您可以使用param-Dgoals並調用您的自定義插件。

我不確定您的要求,但爲什麼不能在項目生成期間也這樣做?

+0

換句話說,我希望一旦mvn原型解析了佔位符:create命令已完成工作。 –

+0

如果你沒有錯,你的意思是mvn archetype:根據archetype生成你將要創建的項目,而不是mvn archetype:create ??。如果是這樣,那麼正如我所提到的,您可以使用-Dgoals來調用一個插件,您可以在其中進行所有後期處理。 – Thiru

1

是的,這是可能的。從advanced usage guide的Maven原型:

如果用戶想進一步自定義生成的項目,Groovy腳本命名爲原型,後generate.groovy可以將src /主/資源/ META-INF添加/ 。這個腳本將在生成的原型的META-INF文件夾中結束,並且將在從這個原型創建項目時執行。這個groovy腳本可以訪問ArchetypeGenerationRequest對象,以及用戶指定的所有System.getProperties()和所有原型生成屬性。

0

你可以在原型定義附加屬性,格式如下: https://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html

例如:

定義文件:SRC \主\資源\ META-INF \行家\ archetype- metadata.xml中

<archetype-descriptor 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" 
    name="modelant.metamodel.api"> 

<requiredProperties> 
    <requiredProperty key="package"><defaultValue>${groupId}.${artifactId}</defaultValue></requiredProperty> 

    <requiredProperty key="parentGroupId"><defaultValue>${groupId}</defaultValue></requiredProperty> 
    <requiredProperty key="parentArtifactId"><defaultValue>${artifactId}</defaultValue></requiredProperty> 
    <requiredProperty key="parentVersion"><defaultValue>${version}</defaultValue></requiredProperty> 

    <requiredProperty key="metamodelUrl"/> 
</requiredProperties> 
</archetype-descriptor> 

這裏可以看到,它定義了其他需要性質,所以他們必須對話框,其中內強制規定:

  • 一些屬性可能沒有任何價值 - 看metamodelUrl
  • 一些屬性可能有默認值或者 - 爲靜態文本 - 或涉及先前的值定義的標準屬性:groupId,artifactId,版本
  • 某些屬性可能會覆蓋標準屬性的值 - 「包」屬性。這裏重新定義了它。

請注意:

相關問題