Где блок конфигурации выполнения на самом деле go в пом. xml? - PullRequest
1 голос
/ 29 апреля 2020

Кажется, это очень простой вопрос, но что-то работает неправильно.

Итак, учитывая файл pom.xml, я хотел использовать properties-maven-plugin. Если я скопирую то, что в документах , что означает этот код:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0.0</version>
        <executions>
          <execution>
            <phase>generate-resources</phase>
            <goals>
              <goal>write-project-properties</goal>
            </goals>
            <configuration>
              <outputFile>
                   ${project.baseDir}/app.properties
              </outputFile>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

И затем я запускаю, используя mvn properties:write-project-properties, я получаю ошибку:

Failed to execute goal org.codehaus.mojo:properties-maven-plugin:1.0.0:write-project-properties (default-cli) on project backend: The parameters 'outputFile' for goal org.codehaus.mojo:properties-maven-plugin:1.0.0:write-project-properties are missing or invalid

НО

, когда я редактирую код выше и перемещаю configuration прямо рядом с executions, а затем запускаю команду, все работает (даже если IntelliJ подчеркивает выражение configuration красной надписью properties 'child' tag should be defined .

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>write-project-properties</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outputFile>
                        ${project.baseDir}/app.properties
                    </outputFile>
                </configuration>
            </plugin>

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

Я просто случайно наткнулся на этот ответ здесь , который решил эту проблему.

Почему это происходит и где находятся документы для maven, которые мешают мне потратить пару часов впустую на файл конфигурации в следующий раз, когда мне что-то понадобится?

1 Ответ

0 голосов
/ 30 апреля 2020

Причина в следующем:

  • Первый POM определяет выполнение для жизненного цикла Maven вместе с его конфигурацией. Так что он предназначен для запуска, когда вы вызываете что-то вроде mvn clean install. С конфигурацией внутри выполнения вы только что сконфигурировали это выполнение (а не любое другое выполнение, как то, которое вы запустили из командной строки).
  • Второе POM имеет глобальную конфигурацию для цели плагина. Выполнение в POM не имеет значения (вы можете просто удалить его), но выполнение вашей командной строки подберет эту глобальную конфигурацию.

Делает ли это поведение более понятным?

...