在我正在从事的项目中,我们还使用自定义原型,以使生成新的域/连接器更容易。在尝试编写自动测试以验证这些原型后,我遇到了这些原型产生的问题。由于某些原因,并非所有使用-D
标志或使用交互式模式提供的属性都应用于生成的pom.xml
原型看起来像这样。
运行此命令会产生此pom.xml。它应用了属性${package}
和${domainInterface}
的字段,而不是groupId
,artifactId
,version
和name
的字段。
所以我的问题是,我在做错了什么,原型是损坏的还是Maven原型插件中的错误?
我尝试通过克隆github存储库,在本地安装原型然后运行命令来重现此功能。
git clone https://github.com/openengsb/openengsb-framework.git
cd openengsb-framework/tooling/archetypes/domain
vim pom.xml
删除了父pom参考,然后:
mvn clean install
mvn archetype:generate -DarchetypeGroupId=org.openengsb.tooling.archetypes -DarchetypeArtifactId=org.openengsb.tooling.archetypes.domain -DarchetypeVersion=3.0.0-SNAPSHOT -DgroupId=org.openengsb.domain -DartifactId=org.openengsb.domain.foodomain -Dversion=1.0.0-SNAPSHOT -Dname=FooDomain -DopenengsbVersion=3.0.0-SNAPSHOT -Dpackage=org.openengsb.domain.foodomain -DdomainInterface=FooDomain -DdomainName=foodomain -DinteractiveMode=false
cd org.openengsb.domain.foodomain/
cat pom.xml
呈现此pom.xml(仅在此粘贴的一部分):
<properties>
<bundle.symbolicName>org.openengsb.domain.foodomain</bundle.symbolicName>
<bundle.namespace>org.openengsb.domain.foodomain</bundle.namespace>
<domain.name>FooDomain</domain.name>
</properties>
<groupId>org.openengsb.domain</groupId>
<artifactId>org.openengsb.domain.foodomain</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>FooDomain</name>