2012-03-28 6 views
16

У меня есть файл свойств со следующимMaven - Чтение свойства из внешнего файла свойств

junit.version=3.8.1 
dbcp.version=5.5.27 
oracle.jdbc.version=10.2.0.2.0 

Я стараюсь читать эти свойства из моего файла пом, как показано ниже

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>${junit.version}</version> 
    <scope>test</scope> 
</dependency> 


<dependency> 
    <groupId>dbcp</groupId> 
    <artifactId>dbcp</artifactId> 
    <version>${dbcp.version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>${oracle.jdbc.version}</version> 
    <scope>provided</scope> 
</dependency> 

а plugin configuration

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <executions> 
      <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. --> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <file>../live.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

Я нахожу, что когда я запускаю mvn clean install, он не находит свойства, вместо этого он приходит u р со следующими ошибками:

'dependencies.dependency.version' for junit:junit:jar must be a valid version but is '${junit.version}'. @ line 23, column 16 
'dependencies.dependency.version' for dbcp:dbcp:jar must be a valid version but is '${dbcp.version}'. @ line 31, column 12 
'dependencies.dependency.version' for com.oracle:ojdbc14:jar must be a valid version but is '${oracle.jdbc.version}'. @ line 37, column 13 

Вышеуказанными сбоями, как представляется, в ситуациях, когда я отношусь к свойству, когда я объявить зависимость. Я обнаружил, что в некоторых других ситуациях свойство считывается из файла. Например, это работает, если я использую свойство на теге версии проекта (не версия зависимостей).

Кажется, что свойство не читается из файла, если оно упоминается в объявлении зависимости, но читается, если оно относится к из другого места. Есть идеи?

+0

Что смысл иметь эти версии в отдельном файле? – artbristol

+0

Я делюсь этим файлом свойств с другим проектом, который создает оверлей войны с использованием версий. – ziggy

ответ

12

Фаза initialize не является частью clean lifecycle. Вы также должны привязать свой плагин свойств к фазе pre-clean.

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

Правильный способ справиться с этим - переместить версии зависимостей в родительский pom.xml и использовать один и тот же родительский pom в обоих ваших проектах.

+0

Какую фазу я должен использовать, чтобы гарантировать загрузку свойств из команды mvn? – ziggy

+0

Я уже ответил, что. Команда mvn clean использует различный жизненный цикл, который имеет совершенно разные фазы от жизненного цикла по умолчанию (например, mvn package или mvn install). Пожалуйста, перейдите по ссылке в документации из моего ответа. –

+0

Вы имеете в виду что-то вроде этого? pre-clean, initialize ziggy

1

и можно определить следующим образом:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <executions> 
       <execution> 
       <id>pre-clean-config</id> 
        <phase>pre-clean</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
       <execution> 
       <id>initialize-config</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
Смежные вопросы