Return-Path: X-Original-To: apmail-ant-ivy-user-archive@www.apache.org Delivered-To: apmail-ant-ivy-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 40DC3CBCC for ; Thu, 17 May 2012 12:54:38 +0000 (UTC) Received: (qmail 54494 invoked by uid 500); 17 May 2012 12:54:38 -0000 Delivered-To: apmail-ant-ivy-user-archive@ant.apache.org Received: (qmail 54430 invoked by uid 500); 17 May 2012 12:54:37 -0000 Mailing-List: contact ivy-user-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ivy-user@ant.apache.org Delivered-To: mailing list ivy-user@ant.apache.org Received: (qmail 54415 invoked by uid 99); 17 May 2012 12:54:36 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 May 2012 12:54:36 +0000 X-ASF-Spam-Status: No, hits=1.0 required=5.0 tests=SPF_HELO_PASS,SPF_SOFTFAIL X-Spam-Check-By: apache.org Received-SPF: softfail (athena.apache.org: transitioning domain of nicolas.lalevee@hibnet.org does not designate 216.86.168.183 as permitted sender) Received: from [216.86.168.183] (HELO mxout-08.mxes.net) (216.86.168.183) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 May 2012 12:54:29 +0000 Received: from [192.168.1.21] (unknown [77.196.53.51]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id 9AAA8509B4 for ; Thu, 17 May 2012 08:54:05 -0400 (EDT) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Apple Message framework v1084) Subject: Re: IvyDE workspace resolver & classpath container not playing well with AndroidDependencies classpath container... From: =?iso-8859-1?Q?Nicolas_Lalev=E9e?= In-Reply-To: <4FB3E16F.6010701@nwlink.com> Date: Thu, 17 May 2012 14:54:00 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <0F41BC09-6386-4422-8F5E-99F64BEFC674@hibnet.org> References: <4FB3E16F.6010701@nwlink.com> To: ivy-user@ant.apache.org X-Mailer: Apple Mail (2.1084) X-Virus-Checked: Checked by ClamAV on apache.org Le 16 mai 2012 =E0 19:18, Brian Anderson a =E9crit : > I am using Ivy 2.3.0 and IvyDE (2.2.0beta1) together with the Android = SDK (rev 19) to manage dependencies in a collection of Android projects. >=20 > I have multiple Android projects, each with an ivy.xml file describing = dependencies. Some of these Android projects are so-called Android = library projects, others are Android application projects. My goal is = to produce artifacts from Android library projects that can be published = and subsequently used in another Android project as a dependency via = Ivy. (Strictly speaking, Android library projects currently have no = exportable jar artifact. The claim is that this will be supported in = future revs of the Android SDK. None the less, the SDK does produce a = "classes.jar" file that I am using as the library project artifact. = This is working for my purposes.) I have more or less been successful = in accomplishing this...I can produce artifacts from library projects = (i.e. "foo.jar"), publish them to a Nexus repo and subsequently use = these artifacts in another Android project by declaring an appropriate = dependency in ivy.xml associated with the referring Android project. I = have a small Ant build wrapper that resolves dependencies and retrieves = the resolved dependencies, placeing them into the proper place in the = referring Android project (libs/) such that the stock Android SDK Ant = build can pick them up and use them. All is well. >=20 > Of course, I would like all of this to work in Eclipse via IvyDE when = I am working on a collection of Android projects and library projects = that they depend on within a workspace. Having recently discovered the = IvyDE workspace resolver, I elected to try this to manage dependencies = between Android projects and dependent library projects. Note that I am = trying to avoid having the Android project declare its dependency on a = library project using the stock Android SDK mechanism (via = project.properties). If I can avoid having to declare Android project = library dependencies via the stock Android SDK mechanisms I can avoid = having to modify my project files when working in Eclipse versus when = working with the command line build. >=20 > I have setup IvyDE to retrieve dependencies into the libs/ directory. = I have done this by editing the Ivy classpath container configuration as = follows: >=20 > - Build the classpath with: retrieved artifacts > - Retrieve pattern: libs/[artifact]-[revision].[ext] > - Delete old retrieved artifacts: true > - Types: * >=20 > I have also enabled "Resolve dependencies in workspace" and ensured = that my ivy.xml files have a status=3D"integration" per the IvyDE = workspace resolver instructions. >=20 > This configuration ensures that the AndroidDependencies classpath = container (provided by the Android SDK) will properly pickup project = dependencies from the libs/ directory. This works fine for external = dependencies (given that there is an actual artifact that can be copied = into the libs/ directory for the AndroidDependencies classpath container = to pick up), but not with Android library project dependencies that the = workspace resolver deals with. The IvyDE workspace resolver appears to = be working correctly as far as placing workspace dependencies into the = Ivy classpath container, but there is no apparent way to insert a = reference into the AndroidDependencies classpath container so that the = project will build correctly with the library project dependencies. >=20 > I suppose one might suggest that this is a deficiency with the = AndroidDependencies classpath container. This is indeed not possible. The classpath container of Android is = managed by the Android plugin, it cannot be modified by an external = plugin. At least I checked, the Android plugin doesn't offer any = extension point to do so. > Another way would be to have the workspace resolver somehow inject an = artifact from the workspace dependency that can be "retrieved" and = copied via a retrieve pattern into the libs/ directory for the = AndroidDependencies classpath container to pickup. What would be that artifact ? There is no way to be sure how to package = an Eclipse project, some build is involved. IvyDE cannot do that either. > I'm not clear what the kind of reference the workspace resolver = injects into the Ivy classpath container. IvyDE use the JDT API, it add a reference to the dependent project, just = like you would do manually in the "Java Build Path". It is then the = responsibility of the JDT to properly build the classpath with that. I don't know the Android SDK, but isn't it possible to let the classpath = be managed by the IvyDE container ? Let you dependency be in the IvyDE = container and not in the Android container ? Nicolas