我有一个奇怪的问题,在我的发布任务中完全可以将一个ivy.xml中存在的多个工件发布到存储库,但这些工件的内容是相同的。简而言之,ivy发布了多个具有不同名称的工件,如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
..
..
..
<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”(我真的不知道这个任务做了什么)属性来自常春藤:发布任务有帮助但我得到预期的verison内部@ ..而不是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的info标签中添加了revision属性,因此我的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的精确复制品,只是名称不同。你能帮我么?
答案 0 :(得分:1)
我认为主要问题是您用于查找要发布的工件的模式:
<artifacts pattern="${srcRoot}/tmp/jars/[module].[ext]" />
您没有包含工件名称,只包含模块名称。您的模块名称为“ppm”,因此每个jar工件都将根据此模式标识为ppm.jar。您可能想要使用它:
<artifacts pattern="${srcRoot}/tmp/jars/[artifact].[ext]" />
至于其他事情,关于svn和版本,我恐怕我不明白这个问题。如果您仍需要帮助,请澄清。