> -----Original Message-----
> From: Neil Lott [mailto:[EMAIL PROTECTED]
> Sent: Thursday, February 14, 2008 2:59 PM
> To: Ivy User User
> Subject: publishing a pom to the repository
> 
> I'm using a maven-style local repository and I'd like to keep it using
> pom files and not ivy.xml files.
> 
> In other words if I have an artifact in my repository, I'd like it to
> be identified by a pom-style xml file not an ivy-style xml file.
> 
> So here's an example from my repository:
> 
> [EMAIL PROTECTED] repository]$ cd joda-time/joda-time/
> [EMAIL PROTECTED] joda-time]$ ls
> 1.5
> [EMAIL PROTECTED] joda-time]$ cd 1.5/
> [EMAIL PROTECTED] 1.5]$ ls
> joda-time-1.5.jar  joda-time-1.5.pom
> [EMAIL PROTECTED] 1.5]$ cat joda-time-1.5.pom
> <?xml version="1.0" encoding="UTF-8"?>
> <project>
>   <modelVersion>4.0.0</modelVersion>
>   <groupId>joda-time</groupId>
>   <artifactId>joda-time</artifactId>
>   <version>1.5</version>
> </project>
> 
> Here's what I've done.  Before I publish my artifact to the repository
> I do the following
> 
>                       <ivy:makepom ivyfile="${basedir}/ivy.xml"
> pomfile="${basedir}/
> module.pom">
>                          <mapping conf="default" scope="server"/>
>                       </ivy:makepom>
> 
>               <ivy:publish
artifactspattern="@{jar-dir}/[artifact].[ext]"
>                   resolver="local"
>                   status="integration"
>                   forcedeliver="true"
>                               overwrite="true"/>
> 
> But during my publish I always see:
> 
> [ivy:publish]         published ivy to
/home/maven/repository/twc/mas-coredn-
> ondemand/5.1/mas-coredn-ondemand-5.1.pom
> 
> This is confusing because in my resolver configurations my ivy pattern
> is set to look for poms
> 
> <ivysettings>
>   <settings defaultResolver="chained" checkUpToDate="true" />
> 
>   <resolvers>
>       <chain name="chained">
>               <filesystem name="local" changingPattern="none"
> latest="latest-time">
>                       <ivy
> pattern="${ivy.settings.dir}/repository/[organisation]/
> [module]/[revision]/[module]-[revision].pom"/>
>               <artifact pattern="${ivy.settings.dir}/repository/
> [organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
>           </filesystem>
>               <ssh name="shared" user="maven" userPassword="maven"
> host="10.143.8.95" changingPattern="none" latest="latest-time">
>                       <ivy
> pattern="/home/maven/repository/[organisation]/[module]/
> [revision]/[module]-[revision].pom"/>
>               <artifact
pattern="/home/maven/repository/[organisation]/
> [module]/[revision]/[artifact]-[revision].[ext]"/>
>               </ssh>
>       </chain>
>   </resolvers>
> </ivysettings>
> 
> Why would the publish task be smart enough to realize that if the
> extension is .pom then when a ivy-publish happens use the generated
> pom instead of pushing the ivy.xml file?

My guess is that that your resolver specifies that ivy files look like
[module]-[revision].pom and the publish task honors that same
convention.   

Is that really what you want to be doing anyway?  You want pom files to
be treated as if they were ivy files?  Why not treat the pom files in an
artifact pattern instead of an ivy pattern?

I am doing a similar thing, using Ivy as a dependency manager and
generating pomfiles for compliance with a Maven-style repository.   I
declare the pom as a published artifact in ivy.xml and it works fine.


 

Reply via email to