Java maven原型插件未应用所有属性

Java maven原型插件未应用所有属性,java,maven,archetypes,Java,Maven,Archetypes,在我正在进行的一个项目中,我们还使用自定义原型来更容易地生成新的域/连接器。在尝试编写自动化测试来验证这些原型之后,我遇到了生成这些原型的问题。出于某种原因,并非所有使用-D标志或使用交互模式提供的属性都应用于生成的pom.xml 原型看起来像 正在生成的运行结果。它应用了属性${package}和${domainInterface}的字段,但没有应用groupId、artifactId、版本和名称的字段 因此,我的问题是,我是否做错了什么,原型是否已损坏,还是maven原型插件中存在缺陷?我尝

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

原型看起来像

正在生成的运行结果。它应用了属性
${package}
${domainInterface}
的字段,但没有应用
groupId
artifactId
版本
名称
的字段


因此,我的问题是,我是否做错了什么,原型是否已损坏,还是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(仅部分粘贴在此处):


org.openingsb.domain.foodomain
org.openingsb.domain.foodomain
食物域
org.openingsb.domain
org.openingsb.domain.foodomain
1.0.0-SNAPSHOT
食物域

所以是原型pom中的父引用导致了这种奇怪的行为?不确定,但我不想构建所有内容,所以我只安装了原型。不太清楚你为什么会遇到这个问题。你看了本地Maven存储库中的原型文件了吗?你试过我回答中的步骤了吗?是的,我刚看了Maven repo中的jar文件,注意到在src/main/resources/archetype resources/pom.xml(我相信)中,
${groupId}
${artifactId}
${version}
${name}
丢失,即它们具有静态值。我从repo中删除了整个openengsb文件夹,目前正在重新安装它,以查看是否修复了它。这是
org.openengsb.tooling.archetypes.domain-3.0.0-SNAPSHOT.jar
文件中的
archetype resources/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>