0

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

原型看起来像这样

运行此命令会生成此 pom.xml。它应用了属性${package}和的字段,${domainInterface}但没有应用groupId、和的字段。artifactIdversionname

所以我的问题是,我做错了什么,是原型损坏了还是 maven 原型插件中的错误?

4

1 回答 1

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>
于 2012-10-25T10:00:07.863 回答