在我正在开发的项目中,我们还使用自定义原型来更轻松地生成新的域/连接器。在尝试编写自动化测试以验证这些原型后,我遇到了这些原型生成的问题。由于某些原因,并非使用-D
标志或使用交互模式提供的所有属性都应用于生成的pom.xml
原型看起来like this。
运行this command会导致生成this pom.xml。它应用了属性${package}
和${domainInterface}
的字段,但未应用groupId
,artifactId
,version
和name
的字段。
所以我的问题是,我做错了什么,原型被打破了还是maven archetype插件中的一个错误?
答案 0 :(得分:1)
我尝试通过克隆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>