2011-12-09 7 views
4

J'essaye de lancer un projet avec Maven. Mon projet POM contient des dépendances -SNAPSHOT, donc pour exécuter la version automatiquement, je veux utiliser la commande maven suivante, basée sur les objectifs "maven-release-plugin": mvn release: prepare-with-pom pour préparer le fichier pom.xml du projet pour libérer et résoudre automatiquement les dépendances des versions -SNAPSHOT sans les éditer à la main. Malheureusement, j'ai trouvé que cela fonctionne uniquement en mode interactif à partir de la ligne de commande. L'idée est que je me demande si cela peut être fait sans interaction manuelle. J'utilise Bamboo comme serveur CI et je veux avoir ceci dans un plan et exécuter ce projet libérant automatiquement. L'argument --non-interactive ou -B ne fonctionne pas, en fait, si j'utilise -B ou --non-interactive, l'objectif maven échoueVersion Maven: prepare-with-pom non-interactive

la sortie pour mvn release: prepare-with- pom est ceci:

H:\APPS\dev\cmtest\test-dependency\trunk>mvn release:prepare-with-pom -DdryRun=t 
rue 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test-dependency 0.0.4-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-release-plugin:2.0:prepare-with-pom (default-cli) @ test-depend 
ency --- 
[INFO] Resuming release from phase 'check-dependency-snapshots' 
[INFO] Checking dependencies and plugins for snapshots ... 
There are still some remaining snapshot dependencies.: Do you want to resolve th 
em now? (yes/no) no: : yes 
Dependency type to resolve,: specify the selection number (0:All 1:Project Depe 
ndencies 2:Plugins 3:Reports 4:Extensions): (0/1/2/3) 1: : 1 
Resolve Project Dependency Snapshots.: '${artifactGroup}:${artifactId}' set to releas 
e? (yes/no) yes: : yes 
What is the next development version? (0.1.3-SNAPSHOT) 0.1.3-SNAPSHOT: : 
'${artifactGroup}:${artifactId1}_1' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 
'${artifactGroup}:parent-pom' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.3-SNAPSHOT) 0.0.3-SNAPSHOT: : 
What is the release version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.4: : 
What is SCM release tag or label for "test-dependency"? (${artifactGroup}:${artifactId1}_2) test-dependency-0.0.4: : 
What is the new development version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.5-SNAPSHOT: : 
[INFO] Transforming '${artifactId1}_2'... 
[INFO] Updating ${artifactId1}_1 to 0.0.1 
[INFO] Updating ${artifactId1} to 0.1.2 
[INFO] Generating release POMs... 
[INFO] Generating release POM for 'test-dependency'... 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

Alors, pouvez-vous me aider à satisfaire à trouver une astuce pour effectuer cette commande Maven en mode non-interactif? Merci beaucoup

Répondre

1

Alors que votre pom fait référence à des versions de snapshots, je ne crois pas que non-interactive est possible (peut-être un script 'attendez' mais cela pourrait être un peu trop).

La libération d'une bibliothèque reposant sur des instantanés est très dangereuse car les bibliothèques peuvent passer de sous vos pieds. Tous ceux qui utilisent votre bibliothèque vont supposer que chaque fois qu'ils l'utilisent, ils obtiennent les mêmes pots, avec les mêmes SHA, mais en réalité ce n'est pas le cas. C'est pourquoi maven rend presque impossible de faire cela.

Je vous recommande de vous concentrer sur le déplacement de vos dépendances vers des versions publiées ou, si ce n'est pas une option, de conserver votre bibliothèque sous forme d'instantané. Garder votre bibliothèque sous forme d'instantané signifie que vos clients sont au moins conscients que les bibliothèques qu'ils utilisent peuvent changer à leur insu.

+0

oui, je n'ai pas considéré cela. l'idée est que j'ai un parent pom.xml où je garde toutes les versions des projets enfants. J'ai choisi de cette façon afin de savoir à tout moment quelle version de projet enfant j'ai pour chaque version. le problème que j'ai est en ce qui concerne le processus de publication, parce que quand je veux publier un projet enfant, il demande la version du projet parent. Donc j'ai un problème circulaire ici: je ne peux pas libérer mon parent.pom d'abord parce que j'ai besoin de voir tous les projets enfants publiés, et je ne peux pas libérer les enfants d'abord parce qu'ils ont besoin de la version parent – Asgard

Questions connexes