Class EclipseClasspath


  • public abstract class EclipseClasspath
    extends java.lang.Object
    The build path settings for the generated Eclipse project. Used by the GenerateEclipseClasspath task to generate an Eclipse .classpath file.

    The following example demonstrates the various configuration options. Keep in mind that all properties have sensible defaults; only configure them explicitly if the defaults don't match your needs.

     plugins {
         id 'java'
         id 'eclipse'
     }
    
     configurations {
       provided
       someBoringConfig
     }
    
     eclipse {
       //if you want parts of paths in resulting file to be replaced by variables (files):
       pathVariables 'GRADLE_HOME': file('/best/software/gradle'), 'TOMCAT_HOME': file('../tomcat')
    
       classpath {
         //you can tweak the classpath of the Eclipse project by adding extra configurations:
         plusConfigurations += [ configurations.provided ]
    
         //you can also remove configurations from the classpath:
         minusConfigurations += [ configurations.someBoringConfig ]
    
         //if you want to append extra containers:
         containers 'someFriendlyContainer', 'andYetAnotherContainer'
    
         //customizing the classes output directory:
         defaultOutputDir = file('build-eclipse')
    
         //default settings for downloading sources and Javadoc:
         downloadSources = true
         downloadJavadoc = false
    
         //if you want to expose test classes to dependent projects
         containsTestFixtures = true
    
         //customizing which Eclipse source directories should be marked as test
         testSourceSets = [sourceSets.test]
    
         //customizing which dependencies should be marked as test on the project's classpath
         testConfigurations = [configurations.testCompileClasspath, configurations.testRuntimeClasspath]
       }
     }
     
    For tackling edge cases, users can perform advanced configuration on the resulting XML file. It is also possible to affect the way that the Eclipse plugin merges the existing configuration via beforeMerged and whenMerged closures.

    The beforeMerged and whenMerged closures receive a Classpath object.

    Examples of advanced configuration:

     plugins {
         id 'java'
         id 'eclipse'
     }
    
     eclipse {
       classpath {
         file {
           //if you want to mess with the resulting XML in whatever way you fancy
           withXml {
             def node = it.asNode()
             node.appendNode('xml', 'is what I love')
           }
    
           //closure executed after .classpath content is loaded from existing file
           //but before gradle build information is merged
           beforeMerged { classpath ->
             //you can tinker with the Classpath here
           }
    
           //closure executed after .classpath content is loaded from existing file
           //and after gradle build information is merged
           whenMerged { classpath ->
             //you can tinker with the Classpath here
           }
         }
       }
     }
     
    • Constructor Detail

      • EclipseClasspath

        @Inject
        public EclipseClasspath​(Project project)
    • Method Detail

      • getSourceSets

        public java.lang.Iterable<SourceSet> getSourceSets()
        The source sets to be added.

        See EclipseClasspath for an example.

      • setSourceSets

        public void setSourceSets​(java.lang.Iterable<SourceSet> sourceSets)
      • getPlusConfigurations

        public java.util.Collection<Configuration> getPlusConfigurations()
        The configurations whose files are to be added as classpath entries.

        See EclipseClasspath for an example.

      • setPlusConfigurations

        public void setPlusConfigurations​(java.util.Collection<Configuration> plusConfigurations)
      • getMinusConfigurations

        public java.util.Collection<Configuration> getMinusConfigurations()
        The configurations whose files are to be excluded from the classpath entries.

        See EclipseClasspath for an example.

      • setMinusConfigurations

        public void setMinusConfigurations​(java.util.Collection<Configuration> minusConfigurations)
      • getContainers

        public java.util.Set<java.lang.String> getContainers()
        The classpath containers to be added.

        See EclipseClasspath for an example.

      • setContainers

        public void setContainers​(java.util.Set<java.lang.String> containers)
      • getDefaultOutputDir

        public java.io.File getDefaultOutputDir()
        The default output directory where Eclipse puts compiled classes.

        See EclipseClasspath for an example.

      • setDefaultOutputDir

        public void setDefaultOutputDir​(java.io.File defaultOutputDir)
      • getBaseSourceOutputDir

        @Incubating
        public abstract Property<java.io.File> getBaseSourceOutputDir()
        The base output directory for source sets.

        See EclipseClasspath for an example.

        Since:
        8.1
      • isDownloadSources

        public boolean isDownloadSources()
        Whether to download and associate source Jars with the dependency Jars. Defaults to true.

        See EclipseClasspath for an example.

      • setDownloadSources

        public void setDownloadSources​(boolean downloadSources)
      • isDownloadJavadoc

        public boolean isDownloadJavadoc()
        Whether to download and associate Javadoc Jars with the dependency Jars. Defaults to false.

        See EclipseClasspath for an example.

      • setDownloadJavadoc

        public void setDownloadJavadoc​(boolean downloadJavadoc)
      • getPathVariables

        public java.util.Map<java.lang.String,​java.io.File> getPathVariables()
      • setPathVariables

        public void setPathVariables​(java.util.Map<java.lang.String,​java.io.File> pathVariables)
      • isProjectDependenciesOnly

        public boolean isProjectDependenciesOnly()
      • setProjectDependenciesOnly

        public void setProjectDependenciesOnly​(boolean projectDependenciesOnly)
      • getClassFolders

        public java.util.List<java.io.File> getClassFolders()
      • setClassFolders

        public void setClassFolders​(java.util.List<java.io.File> classFolders)
      • getProject

        public Project getProject()
      • containers

        public void containers​(java.lang.String... containers)
        Further classpath containers to be added.

        See EclipseClasspath for an example.

        Parameters:
        containers - the classpath containers to be added
      • file

        public void file​(@DelegatesTo(XmlFileContentMerger.class)
                         Closure closure)
        Enables advanced configuration like tinkering with the output XML or affecting the way that the contents of an existing .classpath file is merged with Gradle build information. The object passed to the whenMerged{} and beforeMerged{} closures is of type Classpath.

        See EclipseProject for an example.

      • file

        public void file​(Action<? super XmlFileContentMerger> action)
        Enables advanced configuration like tinkering with the output XML or affecting the way that the contents of an existing .classpath file is merged with Gradle build information. The object passed to the whenMerged{} and beforeMerged{} closures is of type Classpath.

        See EclipseProject for an example.

        Since:
        3.5
      • resolveDependencies

        public java.util.List<ClasspathEntry> resolveDependencies()
        Calculates, resolves and returns dependency entries of this classpath.
      • mergeXmlClasspath

        public void mergeXmlClasspath​(Classpath xmlClasspath)
      • getFileReferenceFactory

        public org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory getFileReferenceFactory()
      • getContainsTestFixtures

        public Property<java.lang.Boolean> getContainsTestFixtures()
        Returns true if the classpath contains test fixture classes that should be visible through incoming project dependencies.
        Since:
        6.8
      • getTestSourceSets

        @Incubating
        public SetProperty<SourceSet> getTestSourceSets()
        Returns the test source sets.

        The source directories in the returned source sets are marked with the 'test' classpath attribute on the Eclipse classpath.

        The default value contains the following elements:

        • All source sets with names containing the 'test' substring (case ignored)
        • All source sets defined via the jvm-test-suite DSL
        Since:
        7.5
      • getTestConfigurations

        @Incubating
        public SetProperty<Configuration> getTestConfigurations()
        Returns the test configurations.

        All resolved dependencies that appear only in the returned dependency configurations are marked with the 'test' classpath attribute on the Eclipse classpath.

        The default value contains the following elements:

        • The compile and runtime configurations of the testSourceSets, including the jvm-test-suite source sets
        • Other configurations with names containing the 'test' substring (case ignored)

        Note, that this property should contain resolvable configurations only.

        Since:
        7.5