Question

Je suit pom.xml

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

Cela fonctionne bien sur la machine de développement. Si je cours mvn package j'ai artefact project-1.1-dev.war. Si je cours mvn package -DbuildNumber=121 j'ai package-1.1-121.war.

Mais sur serveur CI (de TeamCity) de project-1.1-dev.war toujours obtenu en dépit du fait que les biens buildNumber passé à maven (si je supprime la définition de la propriété par défaut de pom.xml, construit maven artefact avec nom de fichier correct).

Il semble que la détermination propriété système priorité est dépend en quelque sorte sur la plate-forme (version Maven est égale à la fois sur la machine de développement et TC - 2.2.1)?

Était-ce utile?

La solution

C'est un peu étrange ... Peut-être que vous ne pouvez pas forcer le paramètre donné dans la ligne de commande pour avoir une plus grande priorité que celle définie dans la balise <properties>.

Une idée est d'utiliser un profil qui définissent la propriété buildNumber:

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

Par défaut, buildNumber sera égal à la valeur dev. Maintenant, dans votre ligne de commande TeamCity, désactivez ce profil avec la commande mvn ... -P !dev-property (le ! devant un identifiant de profil indique que le profil doit être désactivé).

Autres conseils

La réponse à votre question réside dans une autre question ici sur le SO: Maven propriété surcharge

En bref, vous devez passer -DbuildNumber=121 sur la ligne de commande Maven (sur le « 3 build étape: maven » page) page, parce que la mise en propriété système « buildNumber » sur la « 6 propriétés et les variables » ne remplace pas le maven propriété.

scroll top