Exemple #1
0
  public void apply(final Project project) {
    RepositoryHandler repositories = publicationServices.createRepositoryHandler();
    PublicationContainer publications =
        instantiator.newInstance(DefaultPublicationContainer.class, instantiator);

    // TODO Registering an extension should register it with the model registry as well
    final PublishingExtension extension =
        project
            .getExtensions()
            .create(
                PublishingExtension.NAME,
                DefaultPublishingExtension.class,
                repositories,
                publications);

    project.afterEvaluate(
        new Action<Project>() {
          public void execute(Project project) {
            for (Publication publication : extension.getPublications()) {
              PublicationInternal internalPublication = (PublicationInternal) publication;
              publicationRegistry.registerPublication(
                  project.getPath(),
                  new DefaultProjectPublication(internalPublication.getCoordinates()));
            }
          }
        });

    ModelPath extensionModelPath = ModelPath.path(PublishingExtension.NAME);

    modelRules.register(extensionModelPath.toString(), extension);

    modelRules.rule(
        new ModelRule() {
          public void triggerDeferredConfigurables(PublishingExtension publishingExtension) {
            project.getExtensions().getByType(DefaultPublishingExtension.class);
          }
        });

    Task publishLifecycleTask = project.getTasks().create(PUBLISH_LIFECYCLE_TASK_NAME);
    publishLifecycleTask.setDescription("Publishes all publications produced by this project.");
    publishLifecycleTask.setGroup(PUBLISH_TASK_GROUP);
  }
  private void configureSourceSetDefaults(final JavaPluginConvention pluginConvention) {
    final Project project = pluginConvention.getProject();
    final ProjectSourceSet projectSourceSet =
        project.getExtensions().getByType(ProjectSourceSet.class);

    pluginConvention
        .getSourceSets()
        .all(
            new Action<SourceSet>() {
              public void execute(final SourceSet sourceSet) {
                ConventionMapping outputConventionMapping =
                    ((IConventionAware) sourceSet.getOutput()).getConventionMapping();

                ConfigurationContainer configurations = project.getConfigurations();

                defineConfigurationsForSourceSet(sourceSet, configurations);
                definePathsForSourceSet(sourceSet, outputConventionMapping, project);
                sourceSet.compiledBy(sourceSet.getClassesTaskName());

                Classpath compileClasspath = new SourceSetCompileClasspath(sourceSet);
                DefaultJavaSourceSet javaSourceSet =
                    instantiator.newInstance(
                        DefaultJavaSourceSet.class,
                        "java",
                        sourceSet.getName(),
                        sourceSet.getJava(),
                        compileClasspath);
                projectSourceSet.add(javaSourceSet);
                JvmResourceSet resourceSet =
                    instantiator.newInstance(
                        DefaultJvmResourceSet.class,
                        "resources",
                        sourceSet.getName(),
                        sourceSet.getResources());
                projectSourceSet.add(resourceSet);

                createProcessResourcesTaskForBinary(sourceSet, resourceSet, project);
                createCompileJavaTaskForBinary(sourceSet, javaSourceSet, project);
                createBinaryLifecycleTask(sourceSet, project);

                ClassDirectoryBinarySpecInternal binary =
                    instantiator.newInstance(
                        DefaultClassDirectoryBinarySpec.class,
                        String.format("%sClasses", sourceSet.getName()),
                        sourceSet,
                        javaToolChain,
                        DefaultJavaPlatform.current(),
                        instantiator,
                        taskFactory);

                binary.addSourceSet(javaSourceSet);
                binary.addSourceSet(resourceSet);

                BinaryContainer binaryContainer =
                    project.getExtensions().getByType(BinaryContainer.class);
                binaryContainer.add(binary);

                attachTasksToBinary(binary, sourceSet, project);
              }
            });
  }
Exemple #3
0
  private void configureSourceSetDefaults(final JavaPluginConvention pluginConvention) {
    final Project project = pluginConvention.getProject();
    final ProjectSourceSet projectSourceSet =
        project.getExtensions().getByType(ProjectSourceSet.class);

    pluginConvention
        .getSourceSets()
        .all(
            new Action<SourceSet>() {
              public void execute(final SourceSet sourceSet) {
                ConventionMapping outputConventionMapping =
                    ((IConventionAware) sourceSet.getOutput()).getConventionMapping();

                ConfigurationContainer configurations = project.getConfigurations();

                Configuration compileConfiguration =
                    configurations.findByName(sourceSet.getCompileConfigurationName());
                if (compileConfiguration == null) {
                  compileConfiguration =
                      configurations.add(sourceSet.getCompileConfigurationName());
                }
                compileConfiguration.setVisible(false);
                compileConfiguration.setDescription(
                    String.format("Classpath for compiling the %s sources.", sourceSet.getName()));

                Configuration runtimeConfiguration =
                    configurations.findByName(sourceSet.getRuntimeConfigurationName());
                if (runtimeConfiguration == null) {
                  runtimeConfiguration =
                      configurations.add(sourceSet.getRuntimeConfigurationName());
                }
                runtimeConfiguration.setVisible(false);
                runtimeConfiguration.extendsFrom(compileConfiguration);
                runtimeConfiguration.setDescription(
                    String.format(
                        "Classpath for running the compiled %s classes.", sourceSet.getName()));

                sourceSet.setCompileClasspath(compileConfiguration);
                sourceSet.setRuntimeClasspath(sourceSet.getOutput().plus(runtimeConfiguration));

                outputConventionMapping.map(
                    "classesDir",
                    new Callable<Object>() {
                      public Object call() throws Exception {
                        String classesDirName = String.format("classes/%s", sourceSet.getName());
                        return new File(project.getBuildDir(), classesDirName);
                      }
                    });
                outputConventionMapping.map(
                    "resourcesDir",
                    new Callable<Object>() {
                      public Object call() throws Exception {
                        String classesDirName = String.format("resources/%s", sourceSet.getName());
                        return new File(project.getBuildDir(), classesDirName);
                      }
                    });

                sourceSet.getJava().srcDir(String.format("src/%s/java", sourceSet.getName()));
                sourceSet
                    .getResources()
                    .srcDir(String.format("src/%s/resources", sourceSet.getName()));
                sourceSet.compiledBy(sourceSet.getClassesTaskName());

                FunctionalSourceSet functionalSourceSet =
                    projectSourceSet.create(sourceSet.getName());
                Classpath compileClasspath = new SourceSetCompileClasspath(sourceSet);
                DefaultJavaSourceSet javaSourceSet =
                    instantiator.newInstance(
                        DefaultJavaSourceSet.class,
                        "java",
                        sourceSet.getJava(),
                        compileClasspath,
                        functionalSourceSet);
                functionalSourceSet.add(javaSourceSet);
                ResourceSet resourceSet =
                    instantiator.newInstance(
                        DefaultResourceSet.class,
                        "resources",
                        sourceSet.getResources(),
                        functionalSourceSet);
                functionalSourceSet.add(resourceSet);

                JvmBinaryContainer jvmBinaryContainer =
                    project.getPlugins().getPlugin(JvmLanguagePlugin.class).getJvmBinaryContainer();
                ClassDirectoryBinary binary =
                    jvmBinaryContainer.create(sourceSet.getName(), ClassDirectoryBinary.class);
                ConventionMapping conventionMapping = new DslObject(binary).getConventionMapping();
                conventionMapping.map(
                    "classesDir",
                    new Callable<File>() {
                      public File call() throws Exception {
                        return sourceSet.getOutput().getClassesDir();
                      }
                    });
                conventionMapping.map(
                    "resourcesDir",
                    new Callable<File>() {
                      public File call() throws Exception {
                        return sourceSet.getOutput().getResourcesDir();
                      }
                    });

                binary.getSource().add(javaSourceSet);
                binary.getSource().add(resourceSet);

                binary.getClassesTask().dependsOn(sourceSet.getOutput().getDirs());
              }
            });
  }