Проблема при публикации артефактов (Ivy публикует несколько файлов с разными именами, но с одинаковым содержимым) - PullRequest
0 голосов
/ 02 октября 2010

У меня странная проблема, когда в моей задаче публикации отлично работает публикация нескольких артефактов, присутствующих в одном ivy.xml, в хранилище, но содержимое этих артефактов одинаково.Короче говоря, ivy публикует несколько артефактов с разными именами, как в теге publish ivy.xml, но с одинаковым содержанием в каждом из них.Ниже приводится история того, что я сделал:

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> 

Мои банки, созданные приложением
ppm- $ {ppmversion} .jar
xbeancomponent - $ {ppmversion} .jar
находятся в $ {srcRoot} / tmp / jars

В распознавателе я использую svnkit, предоставленный 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>

..
..
..

Проблемы:
1. Проблема с настройкой вышев том, что когда я запускаю задачу publishPPM, она заменяет мой файл ppm-ivy.xml актуальными версиями, которые мне не нужны.Это нормально, если он пишет этот файл в SVN (что не делает), но не в моем исходном коде, который фиксируется в SVN.поэтому я попытался удалить атрибут forcedeliver = "true" (я действительно не знаю, что эта задача) из задачи ivy: publish, которая помогла, но я получил ожидаемый вариант внутреннего @ .. вместо 1.2.0 Моя новая задача в 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}" status="release" overwrite="true"> 
                        <artifacts pattern="${srcRoot}/tmp/jars/[module].[ext]" /> 
                </ivy:publish> 
 </target> 

То, что я сделал для решения этой проблемы, было в информационном теге в ppm-ivy.xml. Я добавил атрибут ревизии, чтобы мой ppm-ivy.xml выглядел следующим образом:

<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>  

Теперь он публикует оба файла в репозиторий, но проблема заключается в том, что xbeancomponent.jar является точной копией ppm.jar, просто имя другое.Не могли бы вы мне помочь?

1 Ответ

1 голос
/ 05 июля 2011

Я думаю, что основная проблема - шаблон, который вы используете для нахождения артефактов для публикации:

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

Вы указали не имя артефакта, а только имя модуля.Ваше имя модуля "ppm", поэтому каждый артефакт jar будет определяться как ppm.jar на основе этого шаблона.Вы, вероятно, хотите использовать это вместо:

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

Что касается других вещей, о SVN и версиях, боюсь, я не понимаю проблему.Если вам все еще нужна помощь, уточните, пожалуйста.

...