Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix AndroidJavaCompile not detecting incremental changes #11331

Merged
merged 4 commits into from Nov 13, 2019
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -43,6 +43,8 @@ import org.gradle.plugins.ide.idea.GenerateIdeaProject
import org.gradle.plugins.ide.idea.GenerateIdeaWorkspace
import org.gradle.plugins.signing.Sign
import org.gradle.util.GradleVersion
import spock.lang.Issue

/**
* Tests that task classes compiled against earlier versions of Gradle are still compatible.
*/
Expand Down Expand Up @@ -209,4 +211,68 @@ apply plugin: SomePlugin
version previous requireGradleDistribution() withTasks 'assemble' inDirectory(file("producer")) run()
version current requireGradleDistribution() withTasks 't' run()
}

@Issue("https://github.com/gradle/gradle/issues/11330")
def "a subclass of JavaCompile with getSources receives the correct incremental changes"() {
given:
file("producer/build.gradle") << """
apply plugin: 'java'
dependencies {
compile gradleApi()
}
"""

file("producer/src/main/java/MyCompileTask.java") << """
import org.gradle.api.file.FileTree;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.SkipWhenEmpty;
import org.gradle.api.tasks.compile.JavaCompile;
import java.util.List;
import java.util.ArrayList;

public class MyCompileTask extends JavaCompile {
private List<Object> sources = new ArrayList<>();

@PathSensitive(PathSensitivity.RELATIVE)
@InputFiles
@SkipWhenEmpty
public FileTree getSources() {
return getProject().files(sources).getAsFileTree();
}

public void addSource(Object source) {
sources.add(source);
}
}
"""

buildFile << """
buildscript {
dependencies { classpath fileTree(dir: "producer/build/libs", include: '*.jar') }
}

apply plugin: 'java'

tasks.register("myJavaCompile", MyCompileTask) {
def sourceSet = sourceSets.main
def sourceDirectorySet = sourceSet.java
addSource(sourceDirectorySet)
classpath = sourceSet.compileClasspath
destinationDir = file('build/classes/my-java/main')
}
"""

file("src/main/java/MyClass.java") << """
public class MyClass {
}
"""
version previous requireGradleDistribution() withTasks 'assemble' inDirectory(file("producer")) run()

when:
version current requireGradleDistribution() withTasks 'myJavaCompile' run()
then:
file('build/classes/my-java/main/MyClass.class').isFile()
}
}
Expand Up @@ -108,8 +108,8 @@ public FileTree getSource() {
*/
@Deprecated
@Internal
protected FileCollection getSources() {
return ImmutableFileCollection.of();
protected FileTree getSources() {
return ImmutableFileCollection.of().getAsFileTree();
}

/**
Expand Down