Плагин свойств Maven - не работает по наследству - PullRequest
2 голосов
/ 12 января 2012

У меня есть эта структура каталогов

root
 |- pom.xml
 |- submodule1
      |- pom.xml
      |- project.properties
      |- subsubmodules
           |-pom.xml

Submodule1 наследуется от root, а submomodules наследуются от submodule1

Subsubmodules имеет зависимости, которые используют свойства из файла project.properties submodule1 для определения его версии.то есть в Subsubmodules

<dependency>
 <groupId>some.org</groupId>
<artifactId>someartifact</artifactId>
<version>${themodules.version}</version>
</dependency>

В project.properties Submodule1 у меня есть

themodules.version = 1.0

Так что я использовал плагин properties-maven, определив его в корне pom.xml

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <files>
              <!-- *edited from earlier post <file>etc/config/dev.properties</file>-->
<file>${basedir}/project.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

Затем я запускаю mvn install на корневом уровне.Maven говорит, что он не может разрешить $ {themodules.version} в зависимостях.

Я также запустил mvn install на уровне подмодулей, и он все еще не может разрешить.

Помогите пожалуйста

Ответы [ 2 ]

0 голосов
/ 17 сентября 2013

Была похожая проблема с кодом, зарегистрированным другим разработчиком. У них был properties-maven-plugin под корнем pom.xml .

Я переместил его в каждый подпроект, который потреблял свойства, и сделал его путь относительным. Поскольку основная помпа находится в $ {project.basedir} , подпроект будет в .. / $ {project.basedir} .

То есть я добавил плагин к элементу plugins в этих poms и установил для элемента файла значение $ {project.basedir} /../ default -pom.properties .

Когда я это сделал, это сработало.

0 голосов
/ 12 января 2012

Здесь нет ничего общего с наследованием, вам просто нужно добавить местоположение вашего project.properties в конфигурацию properties-maven-plugin в вашем корневом pom.xml:

<configuration>
  <files>
    <file>etc/config/dev.properties</file>
    <file>${project.basedir}/submodule1/project.properties</file>
  </files>
</configuration>

Затем выполните mvn clean install на корневом уровне.

...