Maven原型集成测试中的覆盖属性

时间:2019-07-03 19:31:03

标签: java maven maven-archetype

我正在从原型生成项目,并且在此生成的项目的pom中有一个属性(archetype-resources / pom):

  <properties>
    <myProperty>productionValue</myProperty>
  </properties>

以及以下surefire配置:

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
        <configuration>
          <argLine>
            -Djava.library.path=${myProperty}
          </argLine>
        </configuration>
      </plugin>

当我运行IT时,我希望myProperty被原型pom中的值覆盖,而在用户生成此项目时保持不变。我该怎么办?

我尝试将其设置在archetype.properties文件中,但是其中有一个变量: myProperty=${project.basedir}/IT/path。 我希望${project.basedir}作为IT原型项目的基础,而不是生成的项目,这不是我那样做的情况。

我尝试的另一种方法是使用插件配置:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>${maven-archetype.version}</version>
          <executions>
            <execution>
                <goals>
                    <goal>integration-test</goal>
                </goals>
              <configuration>
                <properties>
                  <myProperty>${project.basedir}/IT/path</myProperty>
                </properties>
              </configuration>
            </execution>
          </executions>
        </plugin>

但是它不能正常工作,生成项目的pom中的myProperty未被更改。我做错了什么事?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题是我放了

<configuration>
  <properties>
    <myProperty>${project.basedir}/IT/path</myProperty>
  </properties>
</configuration>

<execution>标签下,而不在<plugin>下。完成后,它按预期工作。