J'ai utilisé Ivy un peu, mais il me semble avoir encore beaucoup à apprendre.Ivy résoudre ne fonctionne pas avec artefact dynamique
J'ai deux projets. L'un est une application web et l'autre est une bibliothèque dont dépend l'application web. La configuration est que le projet de bibliothèque est compilé dans un fichier jar et publié en utilisant Ivy dans un répertoire du projet. Dans le fichier de construction de l'application Web, j'ai une cible Ant qui appelle la tâche Ivy. Je voudrais faire en sorte que l'application web utilise le mode de résolution dynamique pendant le développement (sur les machines locales du développeur) et le mode de résolution par défaut pour les versions de test et de production. Auparavant, j'ajoutais un horodatage au fichier d'archive de la bibliothèque afin qu'Ivy remarque les modifications dans le fichier lorsque l'application Web tentait de résoudre sa dépendance à ce fichier. Dans Eclipse, cette procédure est fastidieuse car, dans l'application Web, le projet devait être actualisé et le chemin de génération modifié chaque fois qu'un nouveau fichier bibliothèque était publié. Publier un fichier jar nommé de la même manière à chaque fois, je suppose que seuls les développeurs ont besoin d'actualiser le projet.
Le problème est que l'application Web est incapable de récupérer le fichier JAR dynamique.
La sortie je me ressemble à ceci:
resolve:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = /Users/richard/workspace/webapp/web/WEB-INF/config/ivy/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.webapp#webapp;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] found com.webapp#library;latest.integration in local
[ivy:resolve] :: resolution report :: resolve 142ms :: artifacts dl 0ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 1 | 0 | 0 | 0 || 0 | 0 |
---------------------------------------------------------------------
[ivy:resolve]
[ivy:resolve] :: problems summary ::
[ivy:resolve] :::: WARNINGS
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: com.webapp#library;latest.integration: impossible to resolve dynamic revision
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :::: ERRORS
[ivy:resolve] impossible to resolve dynamic revision for com.webapp#library;latest.integration: check your configuration and make sure revision is part of your pattern
[ivy:resolve]
[ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
BUILD FAILED
/Users/richard/workspace/webapp/build.xml:71: impossible to resolve dependencies:
resolve failed - see output for details
L'application web résolution cible ressemble à ceci:
<target name="resolve" depends="load-ivy">
<ivy:configure file="${ivy.dir}/ivysettings.xml" />
<ivy:resolve
file="${ivy.dir}/ivy.xml"
resolveMode="${ivy.resolve.mode}"/>
<ivy:retrieve pattern="${lib.dir}/[artifact]-[revision].[ext]" type="jar" sync="true" />
</target>
Dans ce cas, ivy.resolve.mode a une valeur de ' dynamique »(sans les guillemets).
Le fichier Ivy de l'application Web est simple. Il ressemble à ceci:
<ivy-module version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="com.webapp" module="webapp"/>
<dependencies>
<dependency name="library" rev="${ivy.revision.default}" revConstraint="${ivy.revision.dynamic}" />
</dependencies>
</ivy-module>
Au cours du développement, ivy.revision.dynamic a une valeur de 'latest.integration'. Pendant la production ou le test, 'ivy.revision.default' a la valeur '1.0'.
Des idées? S'il vous plaît laissez-moi savoir s'il y a plus d'informations que je dois fournir.
Merci!
Merci, Mark, mais cela ne résout toujours pas mon problème. J'ai changé la dépendance comme vous l'avez indiqué, varié la valeur de resolveMode dans la cible de résolution de webapp entre 'default' et 'dynamic', et l'ai complètement supprimé, et toujours la dernière publication du pot de bibliothèque n'est pas 'ramassé' par webapp . Faire plus de recherche m'a conduit à ceci: http://ant.apache.org/ivy/history/latest-milestone/concept.html#change Cependant, l'utilisation de checkmodified sur le résolveur local ne fonctionne pas non plus. Je ne dois toujours pas comprendre quelque chose correctement. – richever
J'ai également essayé d'ajouter changePattern en vain: Le fichier bibliothèque est nommé libra-dev.jar. –
richever
Pourriez-vous mettre à jour votre publication avec la nouvelle sortie ivy? Aussi pourriez-vous s'il vous plaît inclure votre fichier ivysettings (Si vous en utilisez un) –