2010-10-02 22 views
0

J'ai un problème étrange où dans ma tâche de publication fonctionne parfaitement bien de publier plusieurs artefacts présents dans un ivy.xml sur le référentiel, mais le contenu de ces artefacts sont les mêmes. En abrégé ivy publie plusieurs artefacts avec des noms différents comme dans la balise publish de ivy.xml mais avec le même contenu dans chacun d'entre eux. Voici l'histoire sont de ce que je l'ai fait:Problème lors de la publication des artefacts (Ivy publie plusieurs bocaux avec un nom différent mais avec le même contenu)

ppm-ivy.xml

<ivy-module version="2.0"> 
<info organisation="ppm" module="ppm"/> 
<configurations> 
    <conf name="internal" description="found within JP repositories" /> 
</configurations> 

<publications>  
    <artifact name="ppm" type="jar" ext="jar"/>  
    <artifact name="xbeancomponent" type="jar" ext="jar"/> 
</publications> 
<dependencies> 
    <dependency org="junit" name="junit" rev="latest.integration" conf="internal-> *"/> 
    <dependency org="qpid" name="qpid-client" rev="${qpidVersion}" conf="internal-> *"/> 
    <dependency org="guice" name="guice" rev="${guiceVersion}" conf="internal-> *"/> 
</dependencies> 
</ivy-module> 

build.xml

<target name="publishPPM" description="publish merlin service to shared repo with ivy"> 
       <ivy:resolve settingsRef="2" file="ppm-ivy.xml" revision="${ppmVersion}" type="jar" /> 
       <ivy:publish settingsRef="2" resolver="publish" srcivypattern="ppm-ivy.xml" organisation="ppm" module="ppm" revision="${ppmVersion}" pubrevision="${ppmVersion}" forcedeliver="true" status="release" overwrite="true"> 
         <artifacts pattern="${srcRoot}/tmp/jars/[module].[ext]" /> 
       </ivy:publish> 
</target> 

Mes pots qu'App créés
ppm - $ {} ppmversion .jar
xbeancomponent - $ {} ppmversion .jar
sont en $ {} srcRoot/tmp/pots

résolveur J'utilise svnkit fourni par Google
..
..
..

<typedef name="svn" classname="fm.last.ivy.plugins.svnresolver.SvnResolver"/> 

<resolvers> 
<svn name="publish" repositoryRoot="http://subversion.myrepo.com/svn/repos/sharedRepo/trunk/ivyRepository" userName="myuser" userPassword="mypass" binaryDiff="false"> 
     <artifact pattern="[organisation]/jars/[revision]/[artifact]-[revision].[ext]"/> 
     </svn> 

..
..
..

Problèmes:
1. Problème avec ci-dessus mis en place est que lorsque je lance la tâche publishPPM, il change mon ppm-ivy.xml avec les versions réelles dont je ne veux pas. C'est ok s'il écrit ce fichier sur svn (ce qu'il ne fait pas) mais pas dans mon code source qui est commit dans le svn. donc j'ai essayé de supprimer le forcedeliver = "vrai" (je ne sais vraiment pas ce que cette tâche fait) attribut de lierre: publier tâche qui a aidé mais je me suis attendu verison interne @ .. au lieu de 1.2.0 Ma nouvelle tâche dans la construction. xml est

<target name="publishPPM" description="publish merlin service to shared repo with ivy"> 
       <ivy:resolve settingsRef="2" file="ppm-ivy.xml" revision="${ppmVersion}" type="jar" /> 
       <ivy:publish settingsRef="2" resolver="publish" srcivypattern="ppm-ivy.xml" organisation="ppm" module="ppm" revision="${ppmVersion}" pubrevision="${ppmVersion}" status="release" overwrite="true"> 
         <artifacts pattern="${srcRoot}/tmp/jars/[module].[ext]" /> 
       </ivy:publish> 
</target> 

ce que je fait pour résoudre ce problème était dans l'étiquette d'information en ppm-ivy.xml i ajouté attribut de révision donc mon ppm-ivy.xml regarde comme ci-dessous:

<ivy-module version="2.0"> 
<info organisation="ppm" module="ppm" revision="${ppmVersion}"/> 
<configurations> 
    <conf name="internal" description="found within JP repositories" /> 
</configurations> 

<publications>  
    <artifact name="ppm" type="jar" ext="jar"/>  
    <artifact name="xbeancomponent" type="jar" ext="jar"/> 
</publications> 
<dependencies> 
    <dependency org="junit" name="junit" rev="latest.integration" conf="internal-> *"/> 
    <dependency org="qpid" name="qpid-client" rev="${qpidVersion}" conf="internal-> *"/> 
    <dependency org="guice" name="guice" rev="${guiceVersion}" conf="internal-> *"/> 
</dependencies> 
</ivy-module> 

maintenant il publie les deux fichiers dans le référentiel, mais le problème est xbeancomponent.jar est la réplique exacte de ppm.jar juste le nom sont différents. Pouvez-vous m'aider s'il vous plaît?

Répondre

1

Je pense que le principal problème est le modèle que vous utilisez pour trouver des artefacts à publier:

<artifacts pattern="${srcRoot}/tmp/jars/[module].[ext]" /> 

Vous n'avez pas inclus le nom d'artefact, mais seul le nom du module. Le nom de votre module est "ppm", donc chaque artefact de pot sera identifié comme ppm.jar basé sur ce modèle. Vous voulez probablement utiliser cette place:

<artifacts pattern="${srcRoot}/tmp/jars/[artifact].[ext]" /> 

En ce qui concerne les autres, sur svn et versions, je crains que je ne comprends pas le problème. Si vous avez encore besoin d'aide, veuillez clarifier.