Плагин Maven Enforcer не применяется

В pom у меня есть параметр для одного из идентификаторов артефакта:

    <dependency>
      <groupId>com.abc.automation</groupId>
      <artifactId>${app}-xyz-extension</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <type>test-jar</type>
    </dependency>

Я намерен заставить любого, кто использует этот pom, передать параметр -Dapp ; для этого я использую плагин Enforcer:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0-M3</version>
          <executions>
            <execution>
              <id>enforce-property</id>
              <phase>validate</phase>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireProperty>
                    <property>app</property>
                    <message>
                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                      You must set the app property!
                      This is used to determine which app is being tested and load the
                      corresponding extension.
                      Example: -Dapp=sampeapp
                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    </message>
                    <!--<regex>.*\d.*</regex>-->
                  </requireProperty>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>

Однако это не означает, что -Dapp должен быть базовым, вместо этого я получаю ошибку от pom, которая

[ОШИБКА] Сборке не удалось прочитать 1 проект -> [Справка 1] org.apache.maven.project.ProjectBuildingException: при обработке POM возникли некоторые проблемы: [ОШИБКА] 'dependencies.dependency.artifactId' для com.abc. Automation:${app}-xyz-extension:test-jar со значением '${app}-taas-extension' не соответствует допустимому шаблону идентификатора. @ строка 18, столбец 19

Элемент плагинов размещается внутри сборки, как показано ниже:

<build>
<pluginManagement>
  <plugins>
    <plugin>
         ....
    </plugin>
  </plugins>
</pluginManagement>
</build>

Мне не хватает основ плагина Enforcer?


person deepakguna    schedule 03.09.2020    source источник
comment
Почему вы определили ArtifactId со свойством? Какая проблема у вас есть или пытаетесь решить?   -  person khmarbaise    schedule 03.09.2020
comment
@khmarbaise Используется для запуска тестов. Разные проекты имеют свой идентификатор артефакта. Этот тестовый бегун независим, поэтому его можно использовать для запуска тестов для любого проекта (его идентификатор артефакта будет передан в качестве параметра)   -  person deepakguna    schedule 04.09.2020
comment
Это просто не имеет смысла, потому что динамический проект не будет работать...   -  person khmarbaise    schedule 04.09.2020
comment
Не могли бы вы объяснить подробнее об этом. Он работает нормально, за исключением поведения силовиков. @к   -  person deepakguna    schedule 05.09.2020


Ответы (2)


Дипак, это может быть из-за какого-то другого плагина/зависимости, в котором есть заполнитель ${app}, написанный до принудительного применения плагина.

person Dhivya    schedule 15.09.2020

Я предполагаю, что определение вашего плагина находится внутри <pluginManagement>. Переместите его в раздел <plugins> POM.

person J Fabian Meier    schedule 03.09.2020
comment
да, ниже показано, как размещается элемент ‹plugins/›, это проблема: ‹build› ‹pluginManagement› ‹plugins› ‹plugin› - person deepakguna; 03.09.2020
comment
Даже после удаления управления плагинами я все еще получаю: жалоба maven на то, что идентификатор артефакта не совпадает. [ОШИБКА] [ОШИБКА] При обработке POM возникли некоторые проблемы: [ОШИБКА] 'dependencies.dependency.artifactId' для com.abc.automation:${app}-xyx-extension:test-jar со значением '${app }-xyz-extension не соответствует допустимому шаблону идентификатора. - person deepakguna; 03.09.2020