Вы столкнулись с ошибкой в properties-maven-plugin
, который уже был reported ранее в этом году, но исправление пока не является часть новой версии:
необоснованного «определение Циркуляр свойства» # 27
Действительно, имея простую pom.xml
со следующим содержанием:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>read-install-properties</id>
<phase>validate</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/main/resources/build.properties</file>
</files>
</configuration>
</execution>
<execution>
<id>write-install-properties</id>
<phase>validate</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>target/build.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Wi го src/main/resources/build.properties
, имеющий простое содержимое:
C = ${A} + ${B} + ${B}
и применение Maven как:
mvn clean validate -DA=1 -DB=2
приведет ли в
[ERROR] Failed to execute goal org.codehaus.mojo:properties-maven-plugin:1.0.0:read-project-properties (read-install-properties) on pr
oject sample: Circular property definition: C=${A} + ${B} + ${B} -> A=1 -> B=2 -> B=2 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Заинтересованный компонента является CircularDefinitionPreventer
класс и не был установлен но через последнюю версию плагина SNAPSHOT.
Вы можете проверить его снова следующим образом: добавить в файл пом раздел ниже:
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Maven Plugin Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
И изменить версию плагина для 1.0.1-SNAPSHOT
. Это позволит вам использовать последнюю версию плагина SNAPSHOT, однако исправление еще не было предоставлено (на момент написания).
Эта же проблема вместо этого отсутствует через Maven filtering. Имея следующий образец POM фрагмент:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Wit тот же файл, как описано выше, и выполнение
mvn clean package -DA=1 -DB2
Мы бы как часть генерируемого .jar
файла, build.properties
файл с содержанием:
C = 1 + 2 + 2
Зачем вам нужен файл свойств, который вы читаете или пишете? – khmarbaise
Для этого проекта у меня есть файл свойств, который считывается установкой конечного продукта. Он загружается на несколько серверов для различных тестов и конфигураций, но файл установщика одинаков. Когда свойства изменяются, мы должны изменить файл свойств на всех серверах, чтобы отразить конфигурацию ne. Я делаю это единственной точкой изменения, которую могут использовать и использовать все серверы. – david