Разве requireProperty не требует типичного свойства maven в Maven Enforcer? - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь потребовать, чтобы определенное свойство было определено во время сборки с использованием подключаемого модуля mavenнужденного управления и правила RequireProperty.

Соответствующая часть моего pom.xml такова.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>


    <properties>
        <foo>bar</foo>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M1</version>
                <executions>
                    <execution>
                        <id>require-properties</id>
                        <goals><goal>enforce</goal></goals>
                        <configuration>
                            <rules>
                                <requireProperty>
                                    <property>${foo}</property>
                                    <message>foo must be defined -${foo}-</message>
                                </requireProperty>
                            </rules>
                            <!-- Disabling, since it seems to not notice properties that are defined -->
                            <!-- <skip>true</skip> -->
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

Когда я запускаю это, правило принудительного применения не выполняется.

$ mvn install 
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------------< test:test >------------------------------
[INFO] Building test 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (require-properties) @ test ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireProperty failed with message:
foo must be defined -bar-
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.398 s
[INFO] Finished at: 2019-03-15T11:45:58-04:00
[INFO] ------------------------------------------------------------------------

Оно также не срабатывает, если я определяю его в командной строке.

$ mvn install -Dfoo=quz
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------------< test:test >------------------------------
[INFO] Building test 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (require-properties) @ test ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireProperty failed with message:
foo must be defined -quz-
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

Разве это правило не для <properties> значений?Из сообщения ясно, что значение фактически установлено.

Я также попытался добавить <regex>.*</regex> безрезультатно.

Как проверить, установлено ли свойство maven?

Реальные данные дела

В этом примере свойство определено в pom, поэтому оно как бы избыточно для включения проверки.В реальном случае плагин определяется в родительском pom, а свойство определяется в листовом pom.Поведение в реальном случае такое же.

mvn -version

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T14: 41: 47-04: 00) Maven home: /usr/local/Cellar/maven/3.6.0/libexec Версия Java: 10.0.1, поставщик: Oracle Corporation, среда выполнения: /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/ Home Язык по умолчанию: en_US, кодировка платформы: UTF-8 Имя ОС: "mac os x", версия: "10.14.3", arch: "x86_64", семейство: "mac"

...