ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brown, Carlton" <Carlton.Br...@compucredit.com>
Subject RE: publishing a pom to the repository
Date Fri, 15 Feb 2008 15:49:27 GMT
> -----Original Message-----
> From: Neil Lott [mailto:neilmatthewlott@yahoo.com]
> 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:
> 
> [maven@azurite repository]$ cd joda-time/joda-time/
> [maven@azurite joda-time]$ ls
> 1.5
> [maven@azurite joda-time]$ cd 1.5/
> [maven@azurite 1.5]$ ls
> joda-time-1.5.jar  joda-time-1.5.pom
> [maven@azurite 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.


 


Mime
View raw message