using IVY dependencies manager programmatically

后端 未结 1 1474
终归单人心
终归单人心 2020-12-06 13:31

i need help using IVY as dependencies manager
my application need to load plug-ins at RUN-TIME
means while the core application is running ,user can request for a

1条回答
  •  时光说笑
    2020-12-06 13:57

    Ivy can be used as a standalone java program:

    java -jar ivy.jar -retrieve "lib/[conf]/[artifact].[ext]"
    

    The retrieve pattern can be then used to determine where files are installed, based on the ivy configuration settings

    $ find lib -type f
    lib/core/commons-lang.jar
    lib/plugin1/commons-logging.jar
    lib/plugin1/commons-codec.jar
    lib/plugin2/commons-logging.jar
    lib/plugin2/commons-cli.jar
    lib/plugin3/commons-logging.jar
    

    Configurations are used as a collective label or grouping of dependencies. They are similar to Maven scopes but much more flexible:

    
        
        
            
            
            
            
        
        
            
            
            
            
        
    
    

    If you only want to download and install one set of jars, into a specified directory you can use the confs parameter:

    java -jar ivy.jar -retrieve "plugin1/[artifact].[ext]" -confs plugin1
    

    Finally, if you still want to use a programming API, you could invoke the run method called by the main class

    http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/Main.java?view=markup

    Update 1

    Groovy has built in support for invoking ivy tasks

    import groovy.xml.NamespaceBuilder
    
    def ant = new AntBuilder()
    def ivy = NamespaceBuilder.newInstance(ant, 'antlib:org.apache.ivy.ant')
    
    ivy.settings(file:"ivysettings.xml")
    ivy.retrieve(pattern:"lib/[conf]/[artifact].[ext]")
    ivy.report(toDir:'reports', graph:false) 
    

    Update 2

    To set the location of your local Maven repository you need to use an ivysettings.xml file.

    
      
      
        
      
    
    

    Update 3

    Just found an article that details how to invoke Ivy from Java

    0 讨论(0)
提交回复
热议问题