Je suit pom.xmlMaven priorité propriété système
<project>
<properties>
<buildNumber>dev</buildNumber>
</properties>
<build>
<finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
</build>
</project>
Cela fonctionne très bien sur la machine de développement. Si je cours mvn package
j'ai l'artefact project-1.1-dev.war
. Si je cours mvn package -DbuildNumber=121
j'ai package-1.1-121.war
.
Mais sur serveur CI (TeamCity) toujours obtenu project-1.1-dev.war
malgré le fait que buildNumber
propriété a été transférée à Maven (si je supprime la définition de la propriété par défaut de pom.xml
, Maven construit artefact avec nom de fichier correct).
Il semble que la priorité de résolution de propriété du système dépende en quelque sorte de la plate-forme (la version de maven est égale à la fois sur le développeur et TC-2.2.1)?
Pas exactement. J'ai besoin d'un moyen de distinguer deux artefacts de construction (quand ils sont déployés en production). Utilisation de SNAPSHOT je ne peux pas faire cela. Tous les artefacts de construction auront le nom 'project-1.1-SNAPSHOT.war' –
Si vous avez deux versions distinctes que vous allez déployer en production, elles doivent avoir des numéros de version différents, l'acte de créer une version devrait consommer une version. * SNAPSHOT * builds (ou dev builds) ne devrait jamais être déployé. Êtes-vous en train de dire que votre construction est différente selon la machine sur laquelle elle a été construite? –
Nous avons un cycle de développement incrémentiel, et changeons la version dans le descripteur POM après chaque changement de code source est exagéré pour nous. Nous utilisons donc le schéma suivant: le développeur définit la version de l'artefact (basée sur la sémantique du changement: compatibilité descendante, etc.) et le compteur d'incrémentation du serveur CI pour marquer les artefacts. Les artefacts "dev" ne sont pas déployés en production. –