maven archetype插件不应用所有属性

时间:2012-10-25 09:12:31

标签: java maven archetypes

在我正在开发的项目中,我们还使用自定义原型来更轻松地生成新的域/连接器。在尝试编写自动化测试以验证这些原型后,我遇到了这些原型生成的问题。由于某些原因,并非使用-D标志或使用交互模式提供的所有属性都应用于生成的pom.xml

原型看起来like this

运行this command会导致生成this pom.xml。它应用了属性${package}${domainInterface}的字段,但未应用groupIdartifactIdversionname的字段。

所以我的问题是,我做错了什么,原型被打破了还是maven archetype插件中的一个错误?

1 个答案:

答案 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>