Skip to content

Commit dad0847

Browse files
authored
Merge pull request #184 from gradle/sg/checkstyle-api
Add fixed Checkstyle API to Java application and library prototypes
2 parents 1e5d74c + 52b1fb2 commit dad0847

File tree

11 files changed

+472
-2
lines changed

11 files changed

+472
-2
lines changed

unified-prototype/config/checkstyle.xml

Lines changed: 357 additions & 0 deletions
Large diffs are not rendered by default.

unified-prototype/testbed-java-application/build.gradle.dcl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ javaApplication {
44
mainClass = "com.example.App"
55
jvmArguments = listOf("-Xmx2G", "-XX:+HeapDumpOnOutOfMemoryError")
66

7+
checkstyle {
8+
checkstyleVersion = "9.3"
9+
configDirectory = layout.settingsDirectory.dir("config")
10+
configFile = layout.settingsDirectory.file("config/checkstyle.xml")
11+
}
12+
713
dependencies {
814
implementation(project(":java-util"))
915
implementation("com.google.guava:guava:32.1.3-jre")

unified-prototype/testbed-java-application/src/main/java/com/example/App.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
import com.example.utils.Utils;
44
import com.google.common.collect.ImmutableList;
55

6+
/**
7+
* Example Java class.
8+
*/
69
public class App {
10+
/**
11+
* Entry point.
12+
*
13+
* @param args command-line arguments
14+
*/
715
public static void main(String[] args) {
816
// Verify that Guava is available
917
ImmutableList.Builder<String> builder = ImmutableList.builder();

unified-prototype/testbed-java-library/src/main/java/com/example/lib/Library.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
import com.example.utils.Utils;
44
import com.google.common.collect.ImmutableList;
55

6+
/**
7+
* Example Java class.
8+
*/
69
public class Library {
10+
/**
11+
* Example Java method.
12+
*
13+
* @return collection of messages
14+
*/
715
public Iterable<String> getMessages() {
816
// Verify that Guava is available
917
ImmutableList.Builder<String> builder = ImmutableList.builder();

unified-prototype/unified-plugin/plugin-jvm/src/main/java/org/gradle/api/experimental/java/JavaApplication.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.gradle.api.Action;
44
import org.gradle.api.experimental.common.HasCliExecutables;
5+
import org.gradle.api.experimental.java.checkstyle.HasCheckstyle;
56
import org.gradle.api.experimental.jvm.HasJavaTarget;
67
import org.gradle.api.experimental.jvm.HasJvmApplication;
78
import org.gradle.api.experimental.jvm.extensions.testing.Testing;
@@ -11,7 +12,7 @@
1112
/**
1213
* An application implemented using a single version of Java.
1314
*/
14-
public interface JavaApplication extends HasJavaTarget, HasJvmApplication, HasCliExecutables {
15+
public interface JavaApplication extends HasJavaTarget, HasJvmApplication, HasCliExecutables, HasCheckstyle {
1516
@Nested
1617
Testing getTesting();
1718

unified-prototype/unified-plugin/plugin-jvm/src/main/java/org/gradle/api/experimental/java/JavaLibrary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.gradle.api.experimental.java;
22

33
import org.gradle.api.Action;
4+
import org.gradle.api.experimental.java.checkstyle.HasCheckstyle;
45
import org.gradle.api.experimental.jvm.HasJavaTarget;
56
import org.gradle.api.experimental.common.HasLibraryDependencies;
67
import org.gradle.api.experimental.jvm.extensions.testing.Testing;
@@ -10,7 +11,7 @@
1011
/**
1112
* A library implemented using a single version of Java.
1213
*/
13-
public interface JavaLibrary extends HasJavaTarget, HasLibraryDependencies {
14+
public interface JavaLibrary extends HasJavaTarget, HasLibraryDependencies, HasCheckstyle {
1415
@Nested
1516
Testing getTesting();
1617

unified-prototype/unified-plugin/plugin-jvm/src/main/java/org/gradle/api/experimental/java/StandaloneJavaApplicationPlugin.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.gradle.api.internal.plugins.software.SoftwareType;
88
import org.gradle.api.plugins.ApplicationPlugin;
99
import org.gradle.api.plugins.jvm.JvmTestSuite;
10+
import org.gradle.api.plugins.quality.CheckstylePlugin;
1011
import org.gradle.jvm.toolchain.JavaToolchainService;
1112
import org.gradle.testing.base.TestingExtension;
1213

@@ -32,6 +33,12 @@ public void apply(Project project) {
3233

3334
project.getExtensions().getByType(TestingExtension.class).getSuites().withType(JvmTestSuite.class).named("test").configure(JvmTestSuite::useJUnitJupiter);
3435

36+
dslModel.checkstyle(checkstyleDefinition -> {
37+
checkstyleDefinition.getCheckstyleVersion().convention(CheckstylePlugin.DEFAULT_CHECKSTYLE_VERSION);
38+
checkstyleDefinition.getConfigDirectory().convention(project.getLayout().getSettingsDirectory().dir("config"));
39+
checkstyleDefinition.getConfigFile().convention(checkstyleDefinition.getConfigDirectory().file("checkstyle.xml"));
40+
});
41+
3542
linkDslModelToPlugin(project, dslModel);
3643
}
3744

@@ -44,6 +51,7 @@ private void linkDslModelToPlugin(Project project, JavaApplication dslModel) {
4451
JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.getDependencies());
4552
JvmPluginSupport.linkTestJavaVersion(project, getJavaToolchainService(), dslModel.getTesting());
4653
JvmPluginSupport.linkTestSourceSourceSetDependencies(project, dslModel.getTesting().getDependencies());
54+
JvmPluginSupport.linkCheckstyle(project, dslModel.getCheckstyle());
4755

4856
dslModel.getRunTasks().add(project.getTasks().named("run"));
4957
}

unified-prototype/unified-plugin/plugin-jvm/src/main/java/org/gradle/api/experimental/java/StandaloneJavaLibraryPlugin.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.gradle.api.internal.plugins.software.SoftwareType;
77
import org.gradle.api.plugins.JavaLibraryPlugin;
88
import org.gradle.api.plugins.jvm.JvmTestSuite;
9+
import org.gradle.api.plugins.quality.CheckstylePlugin;
910
import org.gradle.jvm.toolchain.JavaToolchainService;
1011
import org.gradle.testing.base.TestingExtension;
1112

@@ -30,6 +31,12 @@ public void apply(Project project) {
3031

3132
project.getExtensions().getByType(TestingExtension.class).getSuites().withType(JvmTestSuite.class).named("test").configure(JvmTestSuite::useJUnitJupiter);
3233

34+
dslModel.checkstyle(checkstyleDefinition -> {
35+
checkstyleDefinition.getCheckstyleVersion().convention(CheckstylePlugin.DEFAULT_CHECKSTYLE_VERSION);
36+
checkstyleDefinition.getConfigDirectory().convention(project.getLayout().getSettingsDirectory().dir("config"));
37+
checkstyleDefinition.getConfigFile().convention(checkstyleDefinition.getConfigDirectory().file("checkstyle.xml"));
38+
});
39+
3340
linkDslModelToPlugin(project, dslModel);
3441
}
3542

@@ -41,5 +48,6 @@ private void linkDslModelToPlugin(Project project, JavaLibrary dslModel) {
4148
JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.getDependencies());
4249
JvmPluginSupport.linkTestJavaVersion(project, getJavaToolchainService(), dslModel.getTesting());
4350
JvmPluginSupport.linkTestSourceSourceSetDependencies(project, dslModel.getTesting().getDependencies());
51+
JvmPluginSupport.linkCheckstyle(project, dslModel.getCheckstyle());
4452
}
4553
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.gradle.api.experimental.java.checkstyle;
2+
3+
import org.gradle.api.file.DirectoryProperty;
4+
import org.gradle.api.file.RegularFileProperty;
5+
import org.gradle.api.provider.Property;
6+
import org.gradle.declarative.dsl.model.annotations.Restricted;
7+
8+
public interface CheckstyleDefinition {
9+
@Restricted
10+
Property<String> getCheckstyleVersion();
11+
12+
@Restricted
13+
DirectoryProperty getConfigDirectory();
14+
15+
@Restricted
16+
RegularFileProperty getConfigFile();
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.gradle.api.experimental.java.checkstyle;
2+
3+
import org.gradle.api.Action;
4+
import org.gradle.api.tasks.Nested;
5+
import org.gradle.declarative.dsl.model.annotations.Configuring;
6+
7+
public interface HasCheckstyle {
8+
@Nested
9+
CheckstyleDefinition getCheckstyle();
10+
11+
@Configuring
12+
default void checkstyle(Action<? super CheckstyleDefinition> action) {
13+
action.execute(getCheckstyle());
14+
}
15+
}

0 commit comments

Comments
 (0)