You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by shay te <sh...@gmail.com> on 2010/10/08 14:09:28 UTC
Using IVY programatically
hey all.
i am writing an java application based on plug-ins ,
i wish to use IVY ,to help me with dependencies issue when installing a
plug-in at run time
each plug-in should have some jar's he depends on ,
i need IVY to help me with what jar i can keep and what jar are not
necessary
i am new to IVY ,and i notice only XML configuration tutorial
am i at the right direction?
can IVY help me completing my task?
thank you
--
View this message in context: http://old.nabble.com/Using-IVY-programatically-tp29914705p29914705.html
Sent from the ivy-dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
who can i tell ivy what artifacts are currently install ,
and how to get dependencies by the new now
can u provide an example please?
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3243439.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
yes i want to use Ivy programatically
can u direct me to where should i look.
and why cant i do this with the provided example
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3237848.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Maarten Coene <ma...@yahoo.com>.
Sorry, I probably don't understand your question, but if you are looking for
some example code for using Ivy programatically, you could take a look at how
the Ivy Ant tasks are implemented.
If that was not your question, please forgive me :-)
Maarten
----- Original Message ----
From: shacoshe <sh...@gmail.com>
To: dev@ant.apache.org
Sent: Tue, October 26, 2010 11:26:32 PM
Subject: Re: Using IVY programatically
ok ,what example where ? :)
task with no xml ?
--
View this message in context:
http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3237836.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
ok ,what example where ? :)
task with no xml ?
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3237836.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Maarten Coene <ma...@yahoo.com>.
You could use the Ivy ant tasks as an example.
Maarten
----- Original Message ----
From: shacoshe <sh...@gmail.com>
To: dev@ant.apache.org
Sent: Tue, October 26, 2010 8:37:15 PM
Subject: Re: Using IVY programatically
why so complicated , is there some examples of this
--
View this message in context:
http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3237587.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
why so complicated , is there some examples of this
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3237587.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
it was weird that i am passing to
"PomModuleDescriptorParser.getInstance().parseDescriptor" a new IVYSettings
so i passed the instance i created before ,
cause in the logger i see that ,ivy is trying to use file inside IVY jar
:: loading settings :: url =
jar:file:/D:/programming/eclipse_projects/ivyTest/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
here is my exception:
java.lang.IllegalArgumentException: optional part hasn't been closed in
pattern [module]/[revision]/[module]-[revision](-[classifier]
at
org.apache.ivy.core.IvyPatternHelper.substituteTokens(IvyPatternHelper.java:306)
at
org.apache.ivy.core.IvyPatternHelper.substitute(IvyPatternHelper.java:150)
at
org.apache.ivy.core.IvyPatternHelper.substitute(IvyPatternHelper.java:99)
at
org.apache.ivy.core.IvyPatternHelper.substitute(IvyPatternHelper.java:86)
at
org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getArchivePathInCache(DefaultRepositoryCacheManager.java:384)
at
org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getArchiveFileInCache(DefaultRepositoryCacheManager.java:349)
at
org.apache.ivy.core.cache.DefaultRepositoryCacheManager.lockMetadataArtifact(DefaultRepositoryCacheManager.java:1077)
at
org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getSavedArtifactOrigin(DefaultRepositoryCacheManager.java:460)
at
org.apache.ivy.plugins.resolver.BasicResolver.locate(BasicResolver.java:783)
-----------------
also before(using new IvySettings()) the resolve did not throw any exception
but the retrive did throw same exception
thank you
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3235878.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Maarten Coene <ma...@yahoo.com>.
You should do a resolve first.
The retriece expects that the resolve has been performed and looks for
information in the cache
Maarten
----- Original Message ----
From: shacoshe <sh...@gmail.com>
To: dev@ant.apache.org
Sent: Sat, October 23, 2010 8:04:49 PM
Subject: Re: Using IVY programatically
thank you for your help .
this is what i am trying now
try{
File pom = null; // a provided maven pom
// Create a FileSystemResolver pointing to the local maven repository
// FileSystemResolver fsResolver = new FileSystemResolver();
// fsResolver.setName("local-maven-repo");
// fsResolver.setM2compatible(true);
// fsResolver.setLocal(true);
//
fsResolver.addArtifactPattern("D:/programming/eclipse_projects/ivyTest/repo/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).jar");
//
fsResolver.addIvyPattern("D:/programming/eclipse_projects/ivyTest/repo/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).pom");
IvySettings settings = new IvySettings();
IBiblioResolver resolver = new IBiblioResolver();
resolver.setRoot("http://localhost:8080/archiva");
settings.addResolver(resolver);
settings.setDefaultIvyUserDir(new
File("D:/programming/eclipse_projects/ivyTest/repo/"));
settings.setDefaultCache(new
File("D:/programming/eclipse_projects/ivyTest/repo/cache/"));
settings.setDefaultCacheArtifactPattern("[module]/[revision]/[module]-[revision](-[classifier]");
Ivy ivy = Ivy.newInstance(settings);
ivy.getLoggerEngine().pushLogger(new
DefaultMessageLogger(Message.MSG_VERBOSE));
ModuleDescriptor md =
PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(),
new File("src/movies.pom").toURL(), true);
RetrieveOptions retriveOptions = new RetrieveOptions();
retriveOptions.setUseOrigin(true);
retriveOptions.setConfs(md.getConfigurationsNames());
ivy.retrieve(md.getModuleRevisionId(), "lib/[conf]/[artifact].[ext]",
retriveOptions);
}catch(Exception e){
e.printStackTrace();
}
but i am getting this exception
:: loading settings :: url =
jar:file:/D:/programming/eclipse_projects/ivyTest/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: retrieving :: org.jtpc#movies
checkUpToDate=true
confs: [default, master, compile, provided, runtime, test, system, sources,
javadoc, optional]
java.lang.RuntimeException: problem during retrieve of org.jtpc#movies:
java.lang.IllegalStateException: Report file
'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'
does not exist.
at
org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:206)
at org.apache.ivy.Ivy.retrieve(Ivy.java:540)
at Test.main(Test.java:66)
Caused by: java.lang.IllegalStateException: Report file
'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'
does not exist.
at
org.apache.ivy.plugins.report.XmlReportParser.parse(XmlReportParser.java:294)
at
org.apache.ivy.core.retrieve.RetrieveEngine.determineArtifactsToCopy(RetrieveEngine.java:288)
at
org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:104)
... 2 more
why he is looking for a file that dose not exists
"'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'"
thank you
--
View this message in context:
http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3233660.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
thank you for your help .
this is what i am trying now
try{
File pom = null; // a provided maven pom
// Create a FileSystemResolver pointing to the local maven repository
// FileSystemResolver fsResolver = new FileSystemResolver();
// fsResolver.setName("local-maven-repo");
// fsResolver.setM2compatible(true);
// fsResolver.setLocal(true);
//
fsResolver.addArtifactPattern("D:/programming/eclipse_projects/ivyTest/repo/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).jar");
//
fsResolver.addIvyPattern("D:/programming/eclipse_projects/ivyTest/repo/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).pom");
IvySettings settings = new IvySettings();
IBiblioResolver resolver = new IBiblioResolver();
resolver.setRoot("http://localhost:8080/archiva");
settings.addResolver(resolver);
settings.setDefaultIvyUserDir(new
File("D:/programming/eclipse_projects/ivyTest/repo/"));
settings.setDefaultCache(new
File("D:/programming/eclipse_projects/ivyTest/repo/cache/"));
settings.setDefaultCacheArtifactPattern("[module]/[revision]/[module]-[revision](-[classifier]");
Ivy ivy = Ivy.newInstance(settings);
ivy.getLoggerEngine().pushLogger(new
DefaultMessageLogger(Message.MSG_VERBOSE));
ModuleDescriptor md =
PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(),
new File("src/movies.pom").toURL(), true);
RetrieveOptions retriveOptions = new RetrieveOptions();
retriveOptions.setUseOrigin(true);
retriveOptions.setConfs(md.getConfigurationsNames());
ivy.retrieve(md.getModuleRevisionId(), "lib/[conf]/[artifact].[ext]",
retriveOptions);
}catch(Exception e){
e.printStackTrace();
}
but i am getting this exception
:: loading settings :: url =
jar:file:/D:/programming/eclipse_projects/ivyTest/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: retrieving :: org.jtpc#movies
checkUpToDate=true
confs: [default, master, compile, provided, runtime, test, system, sources,
javadoc, optional]
java.lang.RuntimeException: problem during retrieve of org.jtpc#movies:
java.lang.IllegalStateException: Report file
'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'
does not exist.
at
org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:206)
at org.apache.ivy.Ivy.retrieve(Ivy.java:540)
at Test.main(Test.java:66)
Caused by: java.lang.IllegalStateException: Report file
'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'
does not exist.
at
org.apache.ivy.plugins.report.XmlReportParser.parse(XmlReportParser.java:294)
at
org.apache.ivy.core.retrieve.RetrieveEngine.determineArtifactsToCopy(RetrieveEngine.java:288)
at
org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:104)
... 2 more
why he is looking for a file that dose not exists
"'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml'"
thank you
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3233660.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Nicolas Lalevée <ni...@hibnet.org>.
Le 23 oct. 2010 à 13:07, shacoshe a écrit :
>
> why IVY is so complicated to use problematically ,
nice slip-up ;)
> and way do you force me to use XML ,
> why there is a lake of API for that ,
>
> i can see why nobody helps / can help me
Ivy is mainly designed to be used in Ant tasks, yes. There is a Java API though. But I understand it is not trivial to use, there is a lack of documentation, I can say in its use in IvyDE.
For your issue, you have to do in java what you would do in the ivysettings.xml.
You want to add a repository. To do so in Java, use IvySettings#addResolver(DependencyResolver resolver).
Your "archiva" repository is probably a maven like repository ? So you will be probably interested in instantiating an IBiblioResolver as resolver. Set its name, its root. And I think it will work then.
Nicolas
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
why IVY is so complicated to use problematically ,
and way do you force me to use XML ,
why there is a lake of API for that ,
i can see why nobody helps / can help me
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3233346.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
ok , i made a little test ,
i came to some errors , And i dont know how to define my "archiva"
repository
can u help me
this what i have so far :
IvySettings settings = new IvySettings();
settings.setDefaultIvyUserDir(new
File("D:/programming/eclipse_projects/ivyTest/repo/"));
settings.setDefaultCache(new
File("D:/programming/eclipse_projects/ivyTest/repo/cache/"));
settings.setDefaultCacheArtifactPattern("[module]/[revision]/[module]-[revision](-[classifier]");
Ivy ivy = Ivy.newInstance(settings);
ivy.getLoggerEngine().pushLogger(new
DefaultMessageLogger(Message.MSG_VERBOSE));
ModuleDescriptor md =
PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(),
new File("src/test.pom").toURL(), true);
RetrieveOptions retriveOptions = new RetrieveOptions();
retriveOptions.setUseOrigin(true);
retriveOptions.setConfs(md.getConfigurationsNames());
ivy.retrieve(md.getModuleRevisionId(), "lib/[conf]/[artifact].[ext]",
retriveOptions);
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3229246.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by shacoshe <sh...@gmail.com>.
hey ,
how i can give a POM file (for new plugin) , and ask IVY what dependencies
are required
base on CORE application jars , and on installed plug-in jars
and when uninstalling a plug-in i want to call again and check dependencies
are ok .
can u help me please
thank you
--
View this message in context: http://ant.1045680.n5.nabble.com/Using-IVY-programatically-tp3204508p3218360.html
Sent from the Ant - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Maarten Coene <ma...@yahoo.com>.
Shay,
please don't post Ivy questions to ivy-dev@incubator.apache.org since that list
is no longer used.
You should post your Ivy questions to ivy-user@ant.apache.org instead (or
dev@ant.apache.org if they are related to Ivy development).
Maarten
----- Original Message ----
From: Antoine Levy-Lambert <an...@gmx.de>
To: Ant Developers List <de...@ant.apache.org>
Sent: Fri, October 8, 2010 2:33:12 PM
Subject: Re: Using IVY programatically
Hello Shay,
yes, ivy can be used programmatically. I think nearly all classes have public
interfaces.
here a snippet of a piece of code written on my project using ivy 2.1.x APIs
(not sure if there is any change in 2.2.x)
import org.apache.ivy.Ivy;
import org.apache.ivy.Ivy.IvyCallback;
import org.apache.ivy.core.IvyContext;
import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.resolve.ResolvedModuleRevision;
import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
....
Ivy ivy = new Ivy();
configureIvy(ivy);
// using the ivycallback system
MyModuleDescriptor myModuleDescriptor = new MyModuleDescriptor();
ModuleDescriptor md = myModuleDescriptor.parse(ivyFile, ivy);
AFAIK the class org.apache.ivy.Ivy has most of the methods that you need.
Hopes this helps,
Antoine
On 10/8/2010 8:09 AM, shay te wrote:
> hey all.
>
> i am writing an java application based on plug-ins ,
> i wish to use IVY ,to help me with dependencies issue when installing a
> plug-in at run time
>
> each plug-in should have some jar's he depends on ,
> i need IVY to help me with what jar i can keep and what jar are not
> necessary
>
> i am new to IVY ,and i notice only XML configuration tutorial
>
>
> am i at the right direction?
> can IVY help me completing my task?
>
> thank you
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: Using IVY programatically
Posted by Antoine Levy-Lambert <an...@gmx.de>.
Hello Shay,
yes, ivy can be used programmatically. I think nearly all classes have
public interfaces.
here a snippet of a piece of code written on my project using ivy 2.1.x
APIs (not sure if there is any change in 2.2.x)
import org.apache.ivy.Ivy;
import org.apache.ivy.Ivy.IvyCallback;
import org.apache.ivy.core.IvyContext;
import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.resolve.ResolvedModuleRevision;
import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
....
Ivy ivy = new Ivy();
configureIvy(ivy);
// using the ivycallback system
MyModuleDescriptor myModuleDescriptor = new MyModuleDescriptor();
ModuleDescriptor md = myModuleDescriptor.parse(ivyFile, ivy);
AFAIK the class org.apache.ivy.Ivy has most of the methods that you need.
Hopes this helps,
Antoine
On 10/8/2010 8:09 AM, shay te wrote:
> hey all.
>
> i am writing an java application based on plug-ins ,
> i wish to use IVY ,to help me with dependencies issue when installing a
> plug-in at run time
>
> each plug-in should have some jar's he depends on ,
> i need IVY to help me with what jar i can keep and what jar are not
> necessary
>
> i am new to IVY ,and i notice only XML configuration tutorial
>
>
> am i at the right direction?
> can IVY help me completing my task?
>
> thank you
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org