Skip to content

Commit

Permalink
Merge pull request quarkusio#6317 from gastaldi/scala
Browse files Browse the repository at this point in the history
Fixes Gradle build in Scala projects
  • Loading branch information
geoand authored Dec 23, 2019
2 parents 54eb2f5 + e9661e7 commit a960d85
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.quarkus.cli.commands.CreateProject;
import io.quarkus.cli.commands.writer.FileProjectWriter;
Expand Down Expand Up @@ -46,8 +47,7 @@ public void canRunListExtensions() throws IOException {
}

@ParameterizedTest(name = "Build {0} project")
//TODO: Fix Scala build in Windows
@EnumSource(value = SourceType.class, names = {"JAVA","KOTLIN"})
@EnumSource(SourceType.class)
public void canBuild(SourceType sourceType) throws IOException {
createProject(sourceType);

Expand All @@ -74,13 +74,16 @@ private List<String> arguments(String argument) {
}

private void createProject(SourceType sourceType) throws IOException {
Map<String,Object> context = new HashMap<>();
context.put("path", "/greeting");
assertThat(new CreateProject(new FileProjectWriter(projectRoot))
.groupId("com.acme.foo")
.artifactId("foo")
.version("1.0.0-SNAPSHOT")
.buildTool(BuildTool.GRADLE)
.className("org.acme.GreetingResource")
.sourceType(sourceType)
.doCreateProject(new HashMap<>()))
.doCreateProject(context))
.withFailMessage("Project was not created")
.isTrue();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.Set;

import org.gradle.api.Project;
import org.gradle.api.file.FileCollection;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.tasks.SourceSet;

Expand All @@ -14,66 +15,65 @@ public class QuarkusPluginExtension {

private final Project project;

private String outputDirectory;
private File outputDirectory;

private String finalName;

private String sourceDir;
private File sourceDir;

private String workingDir;
private File workingDir;

private String outputConfigDirectory;
private File outputConfigDirectory;

public QuarkusPluginExtension(Project project) {
this.project = project;
}

public File outputDirectory() {
if (outputDirectory == null)
outputDirectory = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput().getClassesDirs().getAsPath();

return new File(outputDirectory);
if (outputDirectory == null) {
outputDirectory = getLastFile(project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput().getClassesDirs());
}
return outputDirectory;
}

public void setOutputDirectory(String outputDirectory) {
this.outputDirectory = outputDirectory;
this.outputDirectory = new File(outputDirectory);
}

public File outputConfigDirectory() {
if (outputConfigDirectory == null) {
outputConfigDirectory = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput().getResourcesDir().getAbsolutePath();
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput().getResourcesDir();
}
return new File(outputConfigDirectory);
return outputConfigDirectory;
}

public void setOutputConfigDirectory(String outputConfigDirectory) {
this.outputConfigDirectory = outputConfigDirectory;
this.outputConfigDirectory = new File(outputConfigDirectory);
}

public File sourceDir() {
if (sourceDir == null) {
sourceDir = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getAllJava().getSourceDirectories().getAsPath();
sourceDir = getLastFile(project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getAllJava().getSourceDirectories());
}
return new File(sourceDir);
return sourceDir;
}

public void setSourceDir(String sourceDir) {
this.sourceDir = sourceDir;
this.sourceDir = new File(sourceDir);
}

public File workingDir() {
if (workingDir == null) {
workingDir = outputDirectory().getPath();
workingDir = outputDirectory();
}

return new File(workingDir);
return workingDir;
}

public void setWorkingDir(String workingDir) {
this.workingDir = workingDir;
this.workingDir = new File(workingDir);
}

public String finalName() {
Expand All @@ -100,4 +100,16 @@ public AppArtifact getAppArtifact() {
public AppModelResolver resolveAppModel() {
return new AppModelGradleResolver(project);
}

/**
* Returns the last file from the specified {@link FileCollection}.
* Needed for the Scala plugin.
*/
private File getLastFile(FileCollection fileCollection) {
File result = null;
for (File f : fileCollection) {
result = f;
}
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ repositories {

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'org.scala-lang:scala-library:${scala_version}'
implementation 'io.quarkus:quarkus-resteasy'

testImplementation 'io.quarkus:quarkus-junit5'
Expand Down

0 comments on commit a960d85

Please sign in to comment.