我需要创建一个新的maven archetype
,其中项目文件包含一些我希望为mvn archetype:generate
提供的自定义参数。只有-DgroupId
,-DartifactId
和version
才能正常使用。但我无法提供,例如-Dparam1=value1
。
我尝试使用requiredProperties
和fileSets
,但它不起作用。 我该如何实现?
archetype.xml
<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">
<id>my-archetype</id>
<requiredProperties>
<requiredProperty key="param1">
<defaultValue>lol</defaultValue>
</requiredProperty>
</requiredProperties>
<fileSets>
<fileSet filtered="true" encoding="UTF-8" >
<directory>src/main/</directory>
</fileSet>
</fileSets>
<resources>
<resource>src/main/someFile.txt</resource>
</resources>
</archetype>
的src /主/ someFile.txt
I am just a txt file, but I need ${param1} value to be here !
我还需要我的项目的pom.xml(mvn archetype:generate
时生成的那个)来替换自定义属性。
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}-server</artifactId>
<version>${version}</version>
<packaging>pom</packaging>
<name>This name has to contains ${param1} !</name>
// ... all the rest stuff
</project>
答案 0 :(得分:0)
根据archetype descriptor documentation,原型描述符需要命名为archetype-metadata.xml
。该示例显示archetype.xml
。
另请注意,初始XML元素为archetype-descriptor
,而不仅仅是archetype
。
文件也必须位于明确定义的位置,以便插件找到它们。
<yourArchetypeProject>
src
main
resources
archetype-resources
<files and directories for project>
META-INF
maven
archetype-metadata.xml
Maven文档肯定会更清楚。我在学习时发现this tutorial很有帮助。