@Override public void execute(GwtPlugin warPlugin) { eclipseProject.buildCommand(ECLIPSE_BUILDER_WEBAPP_VALIDATOR); } });
/** * Configure Eclipse project * * @param eclipseModel Eclipse model to configure */ @Mutate public void configureEclipseProject(EclipseModel eclipseModel) { EclipseProject eclipseProject = eclipseModel.getProject(); eclipseProject.natures(CHECKSTYLE_NATURE); } }
@Override public void execute(Classpath classpath) { Log.log().info("Adding Android source folders"); classpath.getEntries().add(new SourceFolder("src/main/java", "bin")); classpath.getEntries().add(new SourceFolder("build/generated/source/r/debug", "bin")); classpath.getEntries().add(new SourceFolder("build/generated/source/buildConfig/debug", "bin")); classpath.getEntries().add(new SourceFolder("build/generated/source/aidl/debug", "bin")); } }
@Override public void execute(final Project p) { final PutnamiExtension extention = (PutnamiExtension) project.getExtensions() .getByName(PutnamiExtension.PWT_EXTENSION); if (p.getPlugins().hasPlugin("eclipse") && extention.isGooglePluginEclipse()) { final EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); eclipseModel.getProject().natures(ECLIPSE_NATURE); eclipseModel.getProject().buildCommand(ECLIPSE_BUILDER_PROJECT_VALIDATOR); project.getPlugins().withType(PwtPlugin.class, new Action<PwtPlugin>() { @Override public void execute(PwtPlugin warPlugin) { eclipseModel.getProject().buildCommand(ECLIPSE_BUILDER_WEBAPP_VALIDATOR); } }); } } });
private void initGwtEclipsePlugin(final Project project) { final GwtExtension gwtExtension = (GwtExtension) project.getExtensions() .getByName(GwtExtension.NAME); if (project.getPlugins().hasPlugin("eclipse") && gwtExtension.isGwtPluginEclipse()) { final EclipseModel eclipseModel = project.getExtensions() .getByType(EclipseModel.class); final EclipseProject eclipseProject = eclipseModel.getProject(); eclipseProject.natures(ECLIPSE_NATURE); eclipseProject.buildCommand(ECLIPSE_BUILDER_PROJECT_VALIDATOR); eclipseModel.getClasspath().getContainers() .add(ECLIPSE_GWT_CONTAINER); project.getPlugins() .withType(GwtPlugin.class, new Action<GwtPlugin>() { @Override public void execute(GwtPlugin warPlugin) { eclipseProject.buildCommand(ECLIPSE_BUILDER_WEBAPP_VALIDATOR); } }); } } }
@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); }); }); }
@Override public void execute(final Project project) { final EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); eclipseModel.getClasspath().getPlusConfigurations().add(gwtBasePlugin.getGwtConfiguration()); if(eclipseExtension.isAddGwtContainer()) { logger.debug("Using GWT_CONTAINER for eclipse"); eclipseModel.getClasspath().getContainers().add(ECLIPSE_GWT_CONTAINER); eclipseModel.getClasspath().getMinusConfigurations().add(gwtBasePlugin.getGwtSdkConfiguration()); } else { logger.debug("Not using GWT_CONTAINER for eclipse"); eclipseModel.getClasspath().getPlusConfigurations().add(gwtBasePlugin.getGwtSdkConfiguration()); } } });
@Override public void execute(GwtWarPlugin warPlugin) { logger.debug("Configuring eclipse model GWT web application settings"); eclipseModel.getProject().buildCommand(ECLIPSE_BUILDER_WEBAPP_VALIDATOR); project.getTasks().getByName(EclipsePlugin.getECLIPSE_TASK_NAME()).dependsOn(GwtWarPlugin.TASK_WAR_TEMPLATE); project.getTasks().getByName(getAssociatedCleanTask(EclipsePlugin.getECLIPSE_TASK_NAME())).dependsOn(getAssociatedCleanTask(GwtWarPlugin.TASK_WAR_TEMPLATE)); final GdtOptions gdtExtension = ((ExtensionAware)eclipseExtension).getExtensions().create("gdt", GdtOptionsImpl.class); configureGdtExtension(extension, gdtExtension); configureGenerateGdt(gdtExtension); GenerateGdt generateGdt = project.getTasks().create(GENERATE_GDT_TASK, GenerateGdt.class); generateGdt.setSettingsFile(project.file(".settings/com.google.gdt.eclipse.core.prefs")); project.getTasks().getByName(EclipsePlugin.getECLIPSE_TASK_NAME()).dependsOn(generateGdt); project.afterEvaluate(new Action<Project>() { @Override public void execute(final Project project) { final File devWar = extension.getDevWar(); final File classes = new File(devWar, "WEB-INF/classes"); eclipseModel.getClasspath().setDefaultOutputDir(classes); } }); } });
@Override protected void applyOnce(Project project) { EclipseProjectPlugin.modifyEclipseProject(project, eclipseModel -> { eclipseModel.getClasspath().getFile().getXmlTransformer().addAction(this::classic); }); }
@Test public void testEclipseSetup() { project.getPlugins().apply(EclipsePlugin.class); final EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); assertThat(eclipseModel.getProject().getNatures(), hasItem(GwtEclipsePlugin.ECLIPSE_NATURE)); assertThat(eclipseModel.getProject().getBuildCommands(), hasItem(new BuildCommand(GwtEclipsePlugin.ECLIPSE_BUILDER_PROJECT_VALIDATOR))); assertThat(eclipseModel.getProject().getBuildCommands(), not(hasItem(new BuildCommand(GwtEclipsePlugin.ECLIPSE_BUILDER_WEBAPP_VALIDATOR)))); project.getPlugins().apply(WarPlugin.class); assertThat(eclipseModel.getProject().getBuildCommands(), hasItem(new BuildCommand(GwtEclipsePlugin.ECLIPSE_BUILDER_WEBAPP_VALIDATOR))); }
private ClasspathEntry androidSdkEntry() { FileReferenceFactory fileReferenceFactory = new FileReferenceFactory(); Object compileSdkVersion = compileSdkVersion(); Variable variable = new Variable( fileReferenceFactory.fromPath("ANDROID_HOME/platforms/" + compileSdkVersion + "/android.jar")); variable.setSourcePath(fileReferenceFactory.fromPath("ANDROID_HOME/sources/" + compileSdkVersion)); return variable; }
/** * Configure the Eclipse JDT task * * @param eclipseJdt Eclipse JDT task */ @Mutate public void configureEclipseJdtTask(@Each GenerateEclipseJdt eclipseJdt) { Properties properties = loadProperties("org.eclipse.jdt.core.prefs"); eclipseJdt.getJdt().getFile().withProperties(p -> { properties.forEach((name, value) -> { p.computeIfAbsent(name, n -> value); }); }); }
@Override public void execute(Classpath classpath) { List<ClasspathEntry> entries = classpath.getEntries().stream().flatMap(entry -> mapToJars(entry)) .collect(Collectors.toList()); entries.forEach(entry -> { Log.log().info("Adding Android classpath entry: " + entry.toString()); }); classpath.setEntries(entries); }
private Stream<ClasspathEntry> mapToJars(ClasspathEntry entry) { if (entry instanceof Library) { Library library = (Library) entry; if (library.getPath().endsWith(".aar")) { return explodeAarJarFiles(library); } } return Stream.of(entry); }
@Override public void execute(Classpath classpath) { Log.log().info("Adding Android SDK classpath entry"); classpath.getEntries().add(androidSdkEntry()); }
@Override public void apply(Project project) { project.apply(dependencies(ECLIPSE_TASK)); project.apply(dependencies(CHECKSTYLE_TASK)); project.getExtensions().create(ECLIPSE_CHECKSTYLE, EclipseCheckstyleExtension.class); // Ensure that the project has the checkstyle nature / builder applied EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); EclipseProject eclipseProject = eclipseModel.getProject(); eclipseProject.natures(CHECKSTYLE_NATURE, GRADLE_NATURE); // Explicitly set the Java builder before Checkstyle so they don't get added // in an arbitrary order. eclipseProject.buildCommand(JAVA_BUILDER); eclipseProject.buildCommand(CHECKSTYLE_BUILDER); // Wire up our actions to the relevant eclipse tasks.. Task task = project.getTasks().findByName(ECLIPSE_TASK); if (task != null) { task.doLast(EclipseCheckstyle.generateAction()); } task = project.getTasks().findByName(CLEAN_ECLIPSE_TASK); if (task != null) { task.doLast(EclipseCheckstyle.cleanAction()); } }
/** * Configure Eclipse project * * @param eclipseModel Eclipse model to configure */ @Mutate public void configureEclipseProject(EclipseModel eclipseModel) { EclipseProject eclipseProject = eclipseModel.getProject(); eclipseProject.natures(CHECKSTYLE_NATURE); } }
@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"); } });
/** * Configure the Eclipse JDT task * * @param eclipseJdt Eclipse JDT task */ @Mutate public void configureEclipseJdtTask(@Each GenerateEclipseJdt eclipseJdt) { Properties properties = loadProperties("org.eclipse.jdt.core.prefs"); eclipseJdt.getJdt().getFile().withProperties(p -> { properties.forEach((name, value) -> { p.computeIfAbsent(name, n -> value); }); }); }
eclipseModel.getProject().natures(ECLIPSE_NATURE); eclipseModel.getProject().buildCommand(ECLIPSE_BUILDER_PROJECT_VALIDATOR);