| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ant; |
| |
| import com.android.SdkConstants; |
| import com.android.ant.DependencyHelper.JarProcessor; |
| |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.Task; |
| import org.apache.tools.ant.types.Path; |
| import org.apache.tools.ant.types.Path.PathElement; |
| |
| import java.io.File; |
| import java.util.List; |
| |
| public class ComputeProjectClasspathTask extends Task { |
| |
| private String mProjectLocation; |
| private String mProjectClassPathOut; |
| |
| public void setProjectLocation(String projectLocation) { |
| mProjectLocation = projectLocation; |
| } |
| |
| public void setProjectClassPathOut(String projectClassPathOut) { |
| mProjectClassPathOut = projectClassPathOut; |
| } |
| |
| @Override |
| public void execute() throws BuildException { |
| if (mProjectLocation == null) { |
| throw new BuildException("Missing attribute projectLocation"); |
| } |
| if (mProjectClassPathOut == null) { |
| throw new BuildException("Missing attribute projectClassPathOut"); |
| } |
| |
| DependencyHelper helper = new DependencyHelper(new File(mProjectLocation), |
| false /*verbose*/); |
| |
| JarProcessor processor = new JarProcessor(); |
| |
| helper.processLibraries(processor); |
| List<File> jars = processor.getJars(); |
| |
| // add the project's own content of libs/*.jar |
| File libsFolder = new File(mProjectLocation, SdkConstants.FD_NATIVE_LIBS); |
| File[] jarFiles = libsFolder.listFiles(processor.getFilter()); |
| if (jarFiles != null) { |
| for (File jarFile : jarFiles) { |
| jars.add(jarFile); |
| } |
| } |
| |
| jars = helper.sanitizePaths(jars); |
| |
| Project antProject = getProject(); |
| |
| System.out.println("Resolved classpath:"); |
| |
| // create a path with all the jars and the project's output as well. |
| Path path = new Path(antProject); |
| for (File jar : jars) { |
| PathElement element = path.createPathElement(); |
| String p = jar.getAbsolutePath(); |
| element.setPath(p); |
| System.out.println(p); |
| } |
| |
| File bin = new File(mProjectLocation, |
| helper.getOutDir() + File.separator + "classes"); |
| PathElement element = path.createPathElement(); |
| String p = bin.getAbsolutePath(); |
| element.setPath(p); |
| System.out.println(p); |
| |
| antProject.addReference(mProjectClassPathOut, path); |
| } |
| } |