You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Claudio Miranda <cl...@claudius.com.br> on 2010/02/25 21:43:35 UTC
[ivyde] How the resolve task can pickup the source artifact published
by ant ?
Hi, currently my project has a publish task to the local ivy cache and
it (looks to) works.
Looks like the issue is the IvyDE is not able to pickup the sources as
it reads a ivy.xml from repo that doesn't have the sources
configuration.
Let me say that the modules and artifacts are published to the ivy
local cache (see 3 below)
I see that ivy creates a ivy-${version}.xml and ivydata-$
{version}.properties at ${ivy.cache.dir}/[organisation]/[artifact]/
when ivy resolves the dependency (see 8 below)
The publish task (see 3 below) creates the following directories: jars
and sources
${ivy.cache.dir}/[organisation]/[artifact]/[type]s/
I see that if I manually change the ${ivy.cache.dir}/[organisation]/
[artifact]/ivy-1.1-SNAPSHOT.xml to include the sources configuration,
IvyDE can pickup the sources instantly.
If I uncomment the <ivy pattern=... at ivysettings.xml the ivy-1.1-
SNAPSHOT.xml is published to the [organisation]/[artifact] directory
but the resolve task of the other project (who dependes of commons-
framework) fails (see 9 below).
In this case, it looks the ivydata-1.1-SNAPSHOT.properties is missing.
I ask:
a) is there a best practice to use the local repo and ivy cache as the
same directory ?
b) Having the local repository the same as the ivy cache, how to
publish the sources and have it correctly resolved by IvyDE ?
Thanks
Claudio
See the pertinent configurations:
==> 1) ivy.xml
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven" >
<info module="commons-framework" organisation="com.corps"
revision="${version}"/>
<configurations>
<conf name="compile" extends="runtime"/>
<conf name="runtime" transitive="false" />
<conf name="default" visibility="public"/>
</configurations>
<publications>
<artifact name="${ant.project.name}" type="jar" ext="jar"
conf="compile" />
<artifact name="${ant.project.name}" type="source" ext="jar"
m:classifier="sources" conf="compile"/>
</publications>
<dependencies>
some dependencies...
</dependencies>
</ivy-module>
=================================================================
==> 2) ivysettings.xml
local.ivy.cache.dir=c:/temp/ivy-cache
<ivysettings>
<!-- The import order is important -->
<!-- The build-local must override build-shared -->
<properties file="build-shared.properties" />
<properties file="build-local.properties" />
<settings defaultResolver="default" />
<resolvers>
<ibiblio name="repo-corps" m2compatible="true" usepoms="false"
root="${nexus.host_port}/nexus/content/groups/public/" />
<filesystem name="local-ivy-cache">
<!-- <ivy pattern="${local.ivy.cache.dir}/[organisation]/
[module]/[artifact]-[revision](-[classifier]).[ext]" /> -->
<artifact pattern="${local.ivy.cache.dir}/[organisation]/
[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]" />
</filesystem>
<chain name="default" returnFirst="true">
<resolver ref="local-ivy-cache"/>
<resolver ref="repo-corps"/>
</chain>
</resolvers>
<caches defaultCacheDir="${local.ivy.cache.dir}"
checkUpToDate="true" />
</ivysettings>
=================================================================
==> 3) publish task at build.xml
<target name="publish" description="==> Copy the JAR file to the ivy
local cache (local disk).">
<mkdir dir="${dist.dir}/source" />
<jar basedir="${src.dir}" destfile="${dist.dir}/source/$
{ant.project.name}-${version}-sources.jar" />
<ivy:publish forcedeliver="true" overwrite="true" update="true"
resolver="local-ivy-cache" pubrevision="${version}" >
<artifacts pattern="${dist.dir}/[type]/[artifact]-[revision](-
[classifier]).[ext]" />
</ivy:publish>
<echo message="project ${ant.project.name} released with version $
{ivy.revision}" />
</target>
=================================================================
==> 4) The dist directory
C:\alphaworks_corps\commons-framework\dist\ivy\ivy-1.1-SNAPSHOT.xml
C:\alphaworks_corps\commons-framework\dist\jar\commons-framework-1.1-
SNAPSHOT.jar
C:\alphaworks_corps\commons-framework\dist\source\commons-
framework-1.1-SNAPSHOT-sources.jar
=================================================================
==> 5) The dist\ivy\ivy-1.1-SNAPSHOT.xml
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
<info organisation="com.corps" module="commons-framework"
revision="1.1-SNAPSHOT" status="integration"
publication="20100225135226"/>
<configurations>
<conf name="compile" extends="runtime"/>
<conf name="runtime" transitive="false"/>
<conf name="default" visibility="public"/>
</configurations>
<publications>
<artifact name="commons-framework" type="jar" ext="jar"
conf="compile"/>
<artifact name="commons-framework" type="source" ext="jar"
m:classifier="sources" conf="compile"/>
</publications>
<dependencies>
some dependencies
</dependencies>
</ivy-module>
=================================================================
==> 6) At the ivy.cache.dir=c:/temp/ivy-cache
C:\temp\ivy-cache\com.corps\commons-framework\jars
25/02/2010 13:52 94.242 commons-framework-1.1-SNAPSHOT.jar
25/02/2010 13:52 32 commons-framework-1.1-
SNAPSHOT.jar.md5
25/02/2010 13:52 40 commons-framework-1.1-
SNAPSHOT.jar.sha1
C:\temp\ivy-cache\com.corps\commons-framework
25/02/2010 13:52 <DIR> ivys
25/02/2010 13:52 <DIR> jars
25/02/2010 13:52 <DIR> sources
C:\temp\ivy-cache\com.corps\commons-framework\ivys
25/02/2010 13:52 2.148 ivy-1.1-SNAPSHOT.xml
25/02/2010 13:52 32 ivy-1.1-SNAPSHOT.xml.md5
25/02/2010 13:52 40 ivy-1.1-SNAPSHOT.xml.sha1
=================================================================
==> 7) other project that have commons-framework-1.1-SNAPSHOT.jar as
dependency
ant compile
[ivy:resolve] found com.corps#commons-framework;1.1-SNAPSHOT in
local-ivy-cache
=================================================================
==> 8) after 7) does an 'ant compile'
C:\temp\ivy-cache\com.corps\commons-framework
25/02/2010 14:20 445 ivy-1.1-SNAPSHOT.xml
25/02/2010 14:20 161 ivydata-1.1-SNAPSHOT.properties
type C:\temp\ivy-cache\com.corps\commons-framework\ivy-1.1-
SNAPSHOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="1.0">
<info organisation="com.corps"
module="commons-framework"
revision="1.1-SNAPSHOT"
status="release"
publication="20100225142018"
default="true"
/>
<configurations>
<conf name="default" visibility="public"/>
</configurations>
<publications>
<artifact name="commons-framework" type="jar" ext="jar"
conf="default"/>
</publications>
</ivy-module>
It doesn't have the 'source' configuration
=================================================================
==> 9) 'ant compile' when publish task copy the dist\ivys\ivy-1.1-
SNAPSHOT.xml to C:\temp\ivy-cache\com.corps\commons-framework\ivy-1.1-
SNAPSHOT.xml
In this case looks the ivydata-1.1-SNAPSHOT.properties is missing
[ivy:resolve] found com.corps#commons-framework;1.1-SNAPSHOT in
default
[ivy:resolve] :: resolution report :: resolve 218ms :: artifacts dl
0ms
---------------------------------------------------------------------
| | modules ||
artifacts |
| conf | number| search|dwnlded|evicted|| number|
dwnlded|
---------------------------------------------------------------------
| compile | 5 | 0 | 0 | 0 || 4
| 0 |
---------------------------------------------------------------------
[ivy:resolve]
[ivy:resolve] :: problems summary ::
[ivy:resolve] :::: ERRORS
[ivy:resolve] unknown resolver null
[ivy:resolve] unknown resolver null
[ivy:resolve]