Ivy not installing some JARs
Asked Answered
A

3

17

I'm using Ivy for project dependency management and it's been working well aside from one issue which I've always had. There are certain dependencies that Ivy is downloading but it's not installing them into my project. For example, log4j.jar is not being put in the project's lib folder even though it's listed as a dependency and is being downloaded successfully. Here's the output from my resolve:

ivy-resolve:
[ivy:configure] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = C:\...\...\...\...\ivysettings.xml
 [ivy:resolve] :: resolving dependencies :: com.gdi#gdi-core;0.0.1.SNAPSHOT
 [ivy:resolve]  confs: [default]
 [ivy:resolve]  found org.apache.axis#axis;1.4 in archiva.internal
 [ivy:resolve]  found org.apache.axis#axis-jaxrpc;1.4 in archiva.internal
 [ivy:resolve]  found org.apache.axis#axis-saaj;1.4 in archiva.internal
 [ivy:resolve]  found wsdl4j#wsdl4j;1.6.2 in archiva.internal
 [ivy:resolve]  found org.slf4j#slf4j-log4j12;1.6.1 in archiva.internal
 [ivy:resolve]  found org.slf4j#slf4j-api;1.6.1 in archiva.internal
 [ivy:resolve]  found log4j#log4j;1.2.16 in archiva.internal
 [ivy:resolve]  found log4j#apache-log4j-extras;1.1 in archiva.internal
 [ivy:resolve]  found org.apache.commons#commons-email;1.1 in archiva.internal
 [ivy:resolve]  found javax.mail#mail;1.4 in archiva.internal
 [ivy:resolve]  found javax.activation#activation;1.1 in archiva.internal
 [ivy:resolve]  found commons-discovery#commons-discovery;0.4 in archiva.internal
 [ivy:resolve]  found commons-logging#commons-logging;1.1 in archiva.internal
 [ivy:resolve]  found logkit#logkit;1.0.1 in archiva.internal
 [ivy:resolve]  found avalon-framework#avalon-framework;4.1.3 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-core;3.6.3.Final in archiva.internal
 [ivy:resolve]  found antlr#antlr;2.7.6 in archiva.internal
 [ivy:resolve]  found commons-collections#commons-collections;3.1 in archiva.internal
 [ivy:resolve]  found dom4j#dom4j;1.6.1 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-commons-annotations;3.2.0.Final in archiva.internal
 [ivy:resolve]  found org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.0.Final in archiva.internal
 [ivy:resolve]  found javax.transaction#jta;1.1 in archiva.internal
 [ivy:resolve]  found javax.validation#validation-api;1.0.0.GA in archiva.internal
 [ivy:resolve]  found ant#ant;1.6.5 in archiva.internal
 [ivy:resolve]  found javassist#javassist;3.12.0.GA in archiva.internal
 [ivy:resolve]  found cglib#cglib;2.2 in archiva.internal
 [ivy:resolve]  found asm#asm;3.1 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-validator;4.1.0 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-ehcache;3.6.3.Final in archiva.internal
 [ivy:resolve]  found net.sf.ehcache#ehcache-core;2.4.1 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-entitymanager;3.6.3.Final in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-search;3.4.0.Final in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-search-analyzers;3.4.0.Final in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-core;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-analyzers;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.solr#solr-analysis-extras;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.solr#solr-core;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.solr#solr-solrj;3.1.0 in archiva.internal
 [ivy:resolve]  found commons-io#commons-io;1.4 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-highlighter;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-memory;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-misc;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-spatial;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-spellchecker;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.solr#solr-commons-csv;3.1.0 in archiva.internal
 [ivy:resolve]  found commons-codec#commons-codec;1.4 in archiva.internal
 [ivy:resolve]  found commons-lang#commons-lang;2.4 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-smartcn;3.1.0 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-stempel;3.1.0 in archiva.internal
 [ivy:resolve]  found javax.jms#jms;1.1 in archiva.internal
 [ivy:resolve]  found javax.annotation#jsr250-api;1.0 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-search-infinispan;3.4.0.Final in archiva.internal
 [ivy:resolve]  found org.infinispan#infinispan-lucene-directory;4.2.1.FINAL in archiva.internal
 [ivy:resolve]  found org.infinispan#infinispan-core;4.2.1.FINAL in archiva.internal
 [ivy:resolve]  found org.jgroups#jgroups;2.12.0.Final in archiva.internal
 [ivy:resolve]  found org.jboss.javaee#jboss-transaction-api;1.0.1.GA in archiva.internal
 [ivy:resolve]  found org.jboss.marshalling#river;1.2.3.GA in archiva.internal
 [ivy:resolve]  found org.jboss.marshalling#marshalling-api;1.2.3.GA in archiva.internal
 [ivy:resolve]  found org.rhq.helpers#rhq-pluginAnnotations;3.0.1 in archiva.internal
 [ivy:resolve]  found i18nlog#i18nlog;1.0.10 in archiva.internal
 [ivy:resolve]  found org.hibernate#hibernate-c3p0;3.6.3.Final in archiva.internal
 [ivy:resolve]  found c3p0#c3p0;0.9.1 in archiva.internal
 [ivy:resolve]  found org.apache.lucene#lucene-queries;3.1.0 in archiva.internal
 [ivy:resolve]  found jakarta-regexp#jakarta-regexp;1.4 in archiva.internal
 [ivy:resolve]  found postgresql#postgresql;9.0-801.jdbc4 in archiva.internal
 [ivy:resolve]  found org.drools#drools-jsr94;5.1.1 in archiva.internal
 [ivy:resolve]  found org.drools#drools-core;5.1.1 in archiva.internal
 [ivy:resolve]  found org.mvel#mvel2;2.0.16 in archiva.internal
 [ivy:resolve]  found org.drools#drools-api;5.1.1 in archiva.internal
 [ivy:resolve]  found org.drools#drools-compiler;5.1.1 in archiva.internal
 [ivy:resolve]  found org.antlr#antlr-runtime;3.1.3 in archiva.internal
 [ivy:resolve]  found org.eclipse.jdt.core.compiler#ecj;3.5.1 in archiva.internal
 [ivy:resolve]  found org.drools#drools-decisiontables;5.1.1 in archiva.internal
 [ivy:resolve]  found org.drools#drools-templates;5.1.1 in archiva.internal
 [ivy:resolve]  found net.sourceforge.jexcelapi#jxl;2.6.10 in archiva.internal
 [ivy:resolve]  found jsr94#jsr94;1.1 in archiva.internal
 [ivy:resolve]  found javax.xml.bind#jaxb-api;2.2.1 in archiva.internal
 [ivy:resolve]  found javax.xml.stream#stax-api;1.0-2 in archiva.internal
 [ivy:resolve] :: resolution report :: resolve 3414ms :: artifacts dl 98ms
 [ivy:resolve]  :: evicted modules:
 [ivy:resolve]  commons-logging#commons-logging;1.0.4 by [commons-logging#commons-logging;1.1] in [default]
 [ivy:resolve]  log4j#log4j;1.2.12 by [log4j#log4j;1.2.16] in [default]
 [ivy:resolve]  org.slf4j#slf4j-api;1.5.5 by [org.slf4j#slf4j-api;1.6.1] in [default]
 [ivy:resolve]  log4j#log4j;1.2.14 by [log4j#log4j;1.2.16] in [default]
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   82  |   0   |   0   |   4   ||  101  |   0   |
    ---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: com.gdi#gdi-core [sync]
[ivy:retrieve]  confs: [default]
[ivy:retrieve]  0 artifacts copied, 73 already retrieved (0kB/45ms)
BUILD SUCCESSFUL
Total time: 5 seconds

The files log4j.jar, infinispan-core-4.2.1.FINAL.jar, and apache-log4j-extras-1.1 are not added to my lib directory like the others and I have to add them manually. Not sure what's causing this or how to fix it. Any help would be appreciated.

Here's the ivy.xml file with the dependencies. Log4j is a dependency of slf4j-log4j12 and infinispan is a dependency of hibernate-search-infinispan. log4j extras is a dependency of my project.

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module
   version="2.0"
   xmlns:m="http://ant.apache.org/ivy/maven"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
   <info
      organisation="com.gdi"
      module="gdi-core"
      revision="0.0.1.SNAPSHOT" />
   <dependencies>
      <dependency
         org="org.apache.axis"
         name="axis"
         rev="1.4" />
      <dependency
         org="org.apache.axis"
         name="axis-jaxrpc"
         rev="1.4" />
      <dependency
         org="org.apache.axis"
         name="axis-saaj"
         rev="1.4" />
      <dependency
         org="wsdl4j"
         name="wsdl4j"
         rev="1.6.2" />
      <dependency
         org="org.slf4j"
         name="slf4j-log4j12"
         rev="1.6.1" />
      <dependency
         org="log4j"
         name="apache-log4j-extras"
         rev="1.1" />
      <dependency
         org="org.apache.commons"
         name="commons-email"
         rev="1.1" />
      <dependency
         org="commons-discovery"
         name="commons-discovery"
         rev="0.4">
         <exclude
            module="servlet-api" />
      </dependency>
      <dependency
         org="commons-logging"
         name="commons-logging"
         rev="1.1">
         <exclude
            module="servlet-api" />
      </dependency>
      <dependency
         org="org.hibernate"
         name="hibernate-core"
         rev="3.6.3.Final">
         <exclude
            module="jboss-jacc-api_JDK4" />
      </dependency>
      <dependency
         org="org.hibernate"
         name="hibernate-validator"
         rev="4.1.0" />
      <dependency
         org="org.hibernate"
         name="hibernate-ehcache"
         rev="3.6.3.Final" />
      <dependency
         org="org.hibernate"
         name="hibernate-entitymanager"
         rev="3.6.3.Final" />
      <dependency
         org="org.hibernate"
         name="hibernate-search"
         rev="3.4.0.Final">
         <exclude
            module="jgroups" />
      </dependency>
      <dependency
         org="org.hibernate"
         name="hibernate-search-infinispan"
         rev="3.4.0.Final" />
      <dependency
         org="org.hibernate"
         name="hibernate-c3p0"
         rev="3.6.3.Final" />
      <dependency
         org="org.hibernate"
         name="hibernate-commons-annotations"
         rev="3.2.0.Final" />
      <dependency
         org="org.apache.lucene"
         name="lucene-queries"
         rev="3.1.0" />
      <dependency
         org="postgresql"
         name="postgresql"
         rev="9.0-801.jdbc4" />
      <dependency
         org="org.drools"
         name="drools-jsr94"
         rev="5.1.1" />
   </dependencies>
</ivy-module>

Update:

Seems like the libraries not being downloaded are "Bundles" ...

 [ivy:resolve]  [NOT REQUIRED] org.slf4j#slf4j-api;1.6.1!slf4j-api.jar
 [ivy:resolve]  [NOT REQUIRED] log4j#log4j;1.2.16!log4j.jar(bundle)
 [ivy:resolve]  [NOT REQUIRED] javax.mail#mail;1.4!mail.jar
Altitude answered 2/6, 2011 at 18:8 Comment(2)
Some modules were evicted (ant.apache.org/ivy/history/2.1.0/ivyfile/conflicts.html) maybe the missing jars are the dependencies for the evicted modules (hard to tell).Horus
The conflicts just show that older versions of log4j were evicted in favor of log4j-1.2.16Altitude
A
46

Found the issue. The problem was that the missing dependencies were "bundle" and my ant script was set to only install "jar" ...

<ivy:retrieve pattern="${ivy.lib.dir}/[artifact].[revision].[ext]"
                type="jar"
                sync="true" />

Fixed version:

<ivy:retrieve pattern="${ivy.lib.dir}/[artifact].[revision].[ext]"
                type="jar,bundle"
                sync="true" />
Altitude answered 7/6, 2011 at 13:50 Comment(4)
Do you happen to know what the difference between the "jar" and "bundle" types is? AFAIK organizations are free to choose the type, but under what circumstances would one choose "bundle" over "jar"?Patmos
They're OSGi bundles: #5390191Altitude
For the life of me I couldn't figure out why Jackson was not being copied over after retrieval, this explains it.Perforation
I had to also update my ivy:resolve task, which also filtered by type.Furthest
S
4

Try setting the left side of conf mapping to default. For example conf="runtime->default" That resolved my issue.

Edit: This can be found in ivy.xml, in the <dependency> tag. For eg:

<dependencies>
    <dependency conf="runtime->default" name="jsf-api" org="com.sun.faces" rev="2.2.13"/>   
</dependencies>

The part ->default is the key.

Sickle answered 1/2, 2012 at 16:1 Comment(0)
O
2

You should verify the conf mapping you're using for those missing jars. In particular, if you have a conf of, say, compile for log4j it won't actually retrieve anything because log4j is published with a conf of master. You'd need to set your conf to something like compile->master. You then need to repeat with the other artifacts that are missing.

Optical answered 3/6, 2011 at 12:19 Comment(1)
All of the missing dependencies have the scope of compile, which I believe is the default.Altitude

© 2022 - 2024 — McMap. All rights reserved.