Значение свойства по умолчанию в конфигурации плагина, когда родительский POM не определяет это свойство - PullRequest
0 голосов
/ 13 декабря 2018

Вот мой сценарий

У меня есть файл POM, в котором с помощью разработанного нами пользовательского плагина, скажем, mycutom-plugin, и этот плагин использует другой плагин под названием asciidoctor-maven-plugin

Я запишу мою озабоченность здесь
1. У меня есть параметр (asciidoctor.sectnumlevels) в asciidoctor-maven-plugin в качестве свойства конфигурации, см. Ниже xml, и значение этого параметра передается родительским POM, что этот плагин используется,

Теперь то, что я хотел, установить значение по умолчанию для $ {asciidoctor.sectnumlevels} из POM mycutom-plugin, когда я не передаю значение из родительского POM, который используется плагин

<plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>${asciidoctor-maven-plugin.version} </version>
                .......
                    <attributes>
                        <toc2>left</toc2>
                ......
            <sectnumlevels>${asciidoctor.sectnumlevels}</sectnumlevels>

                    </attributes>
                </configuration>
                <executions>
                    <execution>
                        <phase>none</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Посмотрите, как я определил свойство в родительском POM

<properties>        
    <asciidoctor.sectnumlevels>4</asciidoctor.sectnumlevels>        
</properties>

Кроме того, я также протестировал приведенное ниже решение, но таким образом оно принимает значение по умолчанию, но когда я передаю значение из POM в качестве плагина свойстваконец, это не переопределение

    <profiles>
    <profile>
        <id>asciidoctor.param.default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <property>
                <name>!asciidoctor.sectnumlevels</name> <!--if not defined from parent POM-->
            </property>
        </activation>
        <properties>
            <asciidoctor.sectnumlevels>3</asciidoctor.sectnumlevels> <!--set default value-->
        </properties>
    </profile>
</profiles>

1 Ответ

0 голосов
/ 13 декабря 2018

Не совсем уверен, что понял ваши настройки здесь.Мне кажется, что вы упоминаете 3 pom-файла: parent, children и mycutom-plugin.

Нельзя передать значение по умолчанию из pom-файла mycustom-plugin в ваш проект.Вы можете определить значения по умолчанию в коде вашего плагина.

Чтобы передать значение по умолчанию от вашего родителя вашим детям, вам не нужно определять профиль, просто определите значение по умолчанию в родительском pom, а затем переопределитеТо же значение в ваших детей POM, если это необходимо.Объявление в родительском и дочернем элементах выполняется одинаково:

<properties>        
     <asciidoctor.sectnumlevels>4</asciidoctor.sectnumlevels>        
</properties>
...