2016-09-26 3 views
3

Новое в Maven, но получить по расстраивает кривой обучения ....Maven определение Циркуляр свойство

У меня есть простой файл POM, который считывает файл свойств и выписывает конфигурационный файл. Я использую 'свойства-Maven-плагин' с

<groupId>org.codehaus.mojo</groupId> 
<artifactId>properties-maven-plugin</artifactId> 
<version>1.0.0</version> 
<executions> 
    <execution> 
    <id>read-install-properties</id> 
     <phase>generate-resources</phase> 
     <goals> 
      <goal>read-project-properties</goal> 
     </goals> 
    </phase> 
    </execution> 
</executions> 

.... .... Когда я добавить строку, как это в моих свойствах файла:

C = ${A} + ${B} 

и запустить MVN MVN установить -f pom2.xml -DA = 1 -DB = 2

Я вижу это в моем выходном файле:

C = 1 + 2 

Как и следовало ожидать.

Когда я изменить линию, чтобы быть

C = ${A} + ${B} + ${B} 

я бы ожидал увидеть это:

C = 1 + 2 + 2 

Но вместо этого я получаю

Circular property definition: C=${A} + ${B} + ${B} -> A=1 -> B=2 -> B=2 -> [Help 1] 

** Вопрос * 8: Что я не понимаю? Вот?

В настоящее время я просматриваю документацию для плагина, чтобы узнать, пропустил ли я что-то очевидное.

+0

Зачем вам нужен файл свойств, который вы читаете или пишете? – khmarbaise

+0

Для этого проекта у меня есть файл свойств, который считывается установкой конечного продукта. Он загружается на несколько серверов для различных тестов и конфигураций, но файл установщика одинаков. Когда свойства изменяются, мы должны изменить файл свойств на всех серверах, чтобы отразить конфигурацию ne. Я делаю это единственной точкой изменения, которую могут использовать и использовать все серверы. – david

ответ

2

Вы столкнулись с ошибкой в ​​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 
+0

Благодарим вас за этот ответ. Я изменил свой проект, и все хорошо! – david

+0

@ david Если это вам помогло, рассмотрите [принятие этого] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Благодарю. –

Смежные вопросы