Приоритет системных свойств Maven - PullRequest
2 голосов
/ 15 сентября 2010

У меня есть следующий pom.xml

<project>
  <properties>
    <buildNumber>dev</buildNumber>
  </properties>
  <build>
    <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
  </build>
</project>

Это прекрасно работает на компьютере разработчика.Если я запускаю mvn package, у меня есть project-1.1-dev.war артефакт.Если я запускаю mvn package -DbuildNumber=121, у меня есть package-1.1-121.war.

Но сервер CI (TeamCity) всегда получает project-1.1-dev.war, несмотря на то, что свойство buildNumber передается в maven (если я удаляю определение свойства по умолчаниюиз pom.xml maven создает артефакт с правильным именем файла).

Похоже, что приоритет разрешения системных свойств как-то зависит от платформы (версия maven одинакова как на компьютере разработчика, так и на TC - 2.2.1)?

Ответы [ 3 ]

1 голос
/ 23 августа 2011

Ответ на ваш вопрос лежит в другом вопросе здесь о SO: Перегрузка свойства Maven

Короче говоря, вам нужно передать -DbuildNumber=121 в командной строке maven (на странице "3 build step: maven"), потому что установка системного свойства "buildNumber" на странице "6 свойств и переменных" не переопределяет собственность maven.

1 голос
/ 15 сентября 2010

Это немного странно ... Возможно, вы не можете заставить параметр, заданный в командной строке, иметь более высокий приоритет, чем тот, который определен в теге <properties>.

Идея состоит в том, чтобы использовать профиль, который определяет свойство buildNumber:

<profiles>
    <profile>
        <id>dev-property</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <buildNumber>dev</buildNumber>
        </properties>
    </profile>
</profiles>

Таким образом, по умолчанию buildNumber будет равно dev значению. Теперь в командной строке TeamCity отключите этот профиль с помощью команды mvn ... -P !dev-property (! перед идентификатором профиля означает, что профиль должен быть отключен).

0 голосов
/ 15 сентября 2010

Вам знакомо понятие SNAPSHOT версий? Похоже, что вы пытаетесь сделать, и поддерживается из коробки Maven. Похоже, вы хотите построить major-minor-incremental или major-minor- dev , если вы можете жить с major-minor-incremental- SNAPSHOT вместо этого он должен делать то, что вы хотите.

...