@Override public void execute(Project project) { logger.info("Updating eclipse model with Android dependencies"); EclipseModel eclipseModel = eclipseModel(project); eclipseModel.getClasspath().getFile().beforeMerged(new AddSourceFoldersAction()); eclipseModel.getClasspath().getFile().whenMerged(new GenerateLibraryDependenciesAction(project)); eclipseModel.getClasspath().getFile().whenMerged(new AndroidSdkLibraryDependenciesAction(project)); project.getTasksByName("eclipseClasspath", false).forEach(t -> t.dependsOn("generateDebugSources")); logger.info("Android dependencies done"); } });
@Override protected void applyOnce(Project project) { EclipseProjectPlugin.modifyEclipseProject(project, eclipseModel -> { eclipseModel.getClasspath().getFile().getXmlTransformer().addAction(this::classic); }); }
/** * Configure the Eclipse classpath task * * @param eclipseClasspath Eclipse classpath task to configure * @param eclipseConfigPlugin Eclipse configuration plugin to configure task */ @Mutate public void configureEclipseClasspathTask(@Each GenerateEclipseClasspath eclipseClasspath, EclipseConfigPlugin eclipseConfigPlugin) { EclipseClasspath classpath = eclipseClasspath.getClasspath(); classpath.setDownloadSources(true); classpath.setDownloadJavadoc(true); classpath.getContainers().remove(EclipseWtpPlugin.WEB_LIBS_CONTAINER); classpath.getFile().withXml(xml -> eclipseConfigPlugin.configureClasspathXml(Validate.notNull(xml))); }
/** * Configure the Eclipse classpath task * * @param eclipseClasspath Eclipse classpath task to configure * @param eclipseConfigPlugin Eclipse configuration plugin to configure task */ @Mutate public void configureEclipseClasspathTask(@Each GenerateEclipseClasspath eclipseClasspath, EclipseConfigPlugin eclipseConfigPlugin) { EclipseClasspath classpath = eclipseClasspath.getClasspath(); classpath.setDownloadSources(true); classpath.setDownloadJavadoc(true); classpath.getContainers().remove(EclipseWtpPlugin.WEB_LIBS_CONTAINER); classpath.getFile().withXml(xml -> eclipseConfigPlugin.configureClasspathXml(Validate.notNull(xml))); }
eclipseModel.getClasspath().getFile().getXmlTransformer().addAction(xmlProvider -> { Node entry = xmlProvider.asNode().appendNode("classpathentry"); entry.attributes().put("kind", "src");
@Override protected void applyOnce(Project project) { ProjectDepsExtension extension = project.getExtensions().create(ProjectDepsExtension.NAME, ProjectDepsExtension.class); EclipseProjectPlugin.modifyEclipseProject(project, eclipseModel -> { // find the project's referenced projects and reference them explicitly in the eclipse model Task prepareEclipse = project.task("prepareEclipse"); prepareEclipse.doLast(task -> { Set<String> referencedProjects = eclipseModel.getProject().getReferencedProjects(); project.getConfigurations().stream() .flatMap(config -> config.getDependencies().stream()) .filter(dep -> dep instanceof ProjectDependency) .forEach(dep -> { referencedProjects.add(dep.getName()); }); }); // it's needed for generating the eclipseClasspath and eclipseProject Iterables.getOnlyElement(project.getTasksByName("eclipseClasspath", false)).dependsOn(prepareEclipse); Iterables.getOnlyElement(project.getTasksByName("eclipseProject", false)).dependsOn(prepareEclipse); // create robust classpath entries for all referenced projects eclipseModel.getClasspath().getFile().getXmlTransformer().addAction(xmlProvider -> { modifyClasspath(xmlProvider.asNode(), eclipseModel, extension); }); }); }