Skip to content

Commit c932952

Browse files
committed
gradle: fix joobyTestRun
- jooby:run: allow to run on test classpath fix #3086 - simplify/refactor code
1 parent e99686a commit c932952

6 files changed

Lines changed: 56 additions & 32 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# How to test locally
2+
3+
- First fun `mvn clean install -P gradlePluin`
4+
- Previous step install plugin in `.m2/repository`
5+
- Creates a gradle project
6+
- Go to `settings.gradle` and add these lines
7+
8+
```groovy
9+
pluginManagement {
10+
repositories {
11+
mavenLocal()
12+
mavenCentral()
13+
gradlePluginPortal()
14+
}
15+
}
16+
17+
rootProject.name = 'your project name'
18+
```
19+

modules/jooby-gradle-plugin/src/main/java/io/jooby/gradle/BaseTask.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Set;
2121
import java.util.function.Predicate;
2222
import java.util.stream.Collectors;
23+
import java.util.stream.Stream;
2324

2425
import edu.umd.cs.findbugs.annotations.NonNull;
2526

@@ -28,6 +29,7 @@
2829
import org.gradle.api.artifacts.Configuration;
2930
import org.gradle.api.plugins.JavaApplication;
3031
import org.gradle.api.plugins.JavaPluginConvention;
32+
import org.gradle.api.plugins.JavaPluginExtension;
3133
import org.gradle.api.tasks.Internal;
3234
import org.gradle.api.tasks.SourceSet;
3335
import org.gradle.api.tasks.SourceSetContainer;
@@ -190,8 +192,8 @@ public class BaseTask extends DefaultTask {
190192
* @param project Project.
191193
* @return Java plugin convention.
192194
*/
193-
protected @NonNull JavaPluginConvention getJavaConvention(final @NonNull Project project) {
194-
return project.getConvention().getPlugin(JavaPluginConvention.class);
195+
protected @NonNull JavaPluginExtension getJavaConvention(final @NonNull Project project) {
196+
return project.getExtensions().getByType(JavaPluginExtension.class);
195197
}
196198

197199
/**

modules/jooby-gradle-plugin/src/main/java/io/jooby/gradle/JoobyPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ private void joobyRun(Project project) {
3131
Map<String, Object> options = new HashMap<>();
3232
options.put(Task.TASK_TYPE, RunTask.class);
3333
options.put(Task.TASK_DEPENDS_ON, "classes");
34-
options.put(Task.TASK_NAME, "joobyRun");
34+
options.put(Task.TASK_NAME, RunTask.RUN);
3535
options.put(Task.TASK_DESCRIPTION, "Run, debug and reload applications");
3636
options.put(Task.TASK_GROUP, "jooby");
3737
project.getTasks().create(options);
@@ -41,7 +41,7 @@ private void joobyTestRun(Project project) {
4141
Map<String, Object> options = new HashMap<>();
4242
options.put(Task.TASK_TYPE, RunTask.class);
4343
options.put(Task.TASK_DEPENDS_ON, "testClasses");
44-
options.put(Task.TASK_NAME, "joobyTestRun");
44+
options.put(Task.TASK_NAME, RunTask.TEST_RUN);
4545
options.put(Task.TASK_DESCRIPTION, "Run, debug and reload applications using test classpath");
4646
options.put(Task.TASK_GROUP, "jooby");
4747
project.getTasks().create(options);

modules/jooby-gradle-plugin/src/main/java/io/jooby/gradle/RunTask.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.Scanner;
1515
import java.util.Set;
1616
import java.util.function.BiConsumer;
17+
import java.util.stream.Collectors;
1718

1819
import org.gradle.api.Project;
1920
import org.gradle.api.Task;
@@ -43,6 +44,9 @@ public class RunTask extends BaseTask {
4344
System.setProperty("jooby.useShutdownHook", "false");
4445
}
4546

47+
public static final String RUN = "joobyRun";
48+
public static final String TEST_RUN = "joobyTestRun";
49+
4650
private ProjectConnection connection;
4751

4852
private String mainClass;
@@ -58,8 +62,6 @@ public class RunTask extends BaseTask {
5862
*/
5963
private Long waitTimeBeforeRestart;
6064

61-
private boolean useTestScope;
62-
6365
/**
6466
* Run task.
6567
*
@@ -69,10 +71,13 @@ public class RunTask extends BaseTask {
6971
public void run() throws Throwable {
7072
try {
7173
Project current = getProject();
72-
String[] tasks = current.getGradle().getTaskGraph().getAllTasks().stream()
74+
75+
var taskList = current.getGradle().getTaskGraph().getAllTasks().stream()
7376
.map(Task::getName)
74-
.filter(name -> !name.equals("joobyRun"))
75-
.toArray(String[]::new);
77+
.collect(Collectors.toList());
78+
boolean useTestScope = taskList.contains(TEST_RUN);
79+
taskList.remove(RUN);
80+
taskList.remove(TEST_RUN);
7681

7782
List<Project> projects = getProjects();
7883

@@ -106,7 +111,7 @@ public void run() throws Throwable {
106111
BuildLauncher compiler = connection.newBuild()
107112
.setStandardError(System.err)
108113
.setStandardOutput(System.out)
109-
.forTasks(tasks);
114+
.forTasks(taskList.toArray(new String[0]));
110115

111116
compiler.run(new ResultHandler<Void>() {
112117
@Override public void onComplete(Void result) {
@@ -130,6 +135,7 @@ public void run() throws Throwable {
130135
getLogger().debug("Adding project: " + project.getName());
131136

132137
List<SourceSet> sourceSet = sourceSet(project, useTestScope);
138+
133139
// main/resources
134140
sourceSet.stream()
135141
.flatMap(it-> it.getResources().getSrcDirs().stream())
@@ -291,10 +297,6 @@ public void setWaitTimeBeforeRestart(Long waitTimeBeforeRestart) {
291297
this.waitTimeBeforeRestart = waitTimeBeforeRestart;
292298
}
293299

294-
protected void setUseTestScope(boolean useTestScope) {
295-
this.useTestScope = useTestScope;
296-
}
297-
298300
/**
299301
*
300302
* Shutdown without killing gradle daemon on ENTER KEY.

modules/jooby-gradle-plugin/src/main/java/io/jooby/gradle/TestRunTask.java

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
11
This project exists to easily integrate the maven build and release process with the gradle plugin: `jooby-gradle-plugin`.
22

33
It runs at the end of the build lifecycle to ensure dependencies are built before gradle plugin.
4+
5+
# How to test locally
6+
7+
- First fun `mvn clean install -P gradlePluin`
8+
- Previous step install plugin in `.m2/repository`
9+
- Creates a gradle project
10+
- Go to `settings.gradle` and add these lines
11+
12+
```groovy
13+
pluginManagement {
14+
repositories {
15+
mavenLocal()
16+
mavenCentral()
17+
gradlePluginPortal()
18+
}
19+
}
20+
21+
rootProject.name = 'your project name'
22+
```

0 commit comments

Comments
 (0)