Skip to content

Commit

Permalink
avoiding forcing resolution when configuring QuarkusApplicationModelTask
Browse files Browse the repository at this point in the history
(cherry picked from commit a65b164)
  • Loading branch information
cdsap authored and gsmet committed Oct 23, 2024
1 parent 5c11e57 commit 1c9483d
Show file tree
Hide file tree
Showing 11 changed files with 139 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -519,14 +519,12 @@ private static void configureApplicationModelTask(Project project, QuarkusApplic
task.getProjectDescriptor().set(projectDescriptor);
task.getLaunchMode().set(launchMode);
task.getOriginalClasspath().setFrom(classpath.getOriginalRuntimeClasspathAsInput());
task.getAppClasspath().configureFrom(classpath.getRuntimeConfiguration());
task.getAppClasspath().configureFrom(classpath.getRuntimeConfigurationWithoutResolvingDeployment());
task.getPlatformConfiguration().configureFrom(classpath.getPlatformConfiguration());
task.getDeploymentClasspath().configureFrom(classpath.getDeploymentConfiguration());
task.getPlatformImportProperties().set(classpath.getPlatformImports().getPlatformProperties());
task.getApplicationModel().set(
project.getLayout().getBuildDirectory()
.file(quarkusModelFile));

task.getDeploymentResolvedWorkaround().from(classpath.getDeploymentConfiguration().getIncoming().getFiles());
task.getPlatformImportProperties().set(classpath.getPlatformImportsWithoutResolvingPlatform().getPlatformProperties());
task.getApplicationModel().set(project.getLayout().getBuildDirectory().file(quarkusModelFile));
}

private static void configureQuarkusBuildTask(Project project, QuarkusPluginExtension quarkusExt, QuarkusBuildTask task,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.CompileClasspath;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.Nested;
import org.gradle.api.tasks.OutputFile;
Expand Down Expand Up @@ -107,6 +108,9 @@ public abstract class QuarkusApplicationModelTask extends DefaultTask {
@CompileClasspath
public abstract ConfigurableFileCollection getOriginalClasspath();

@InputFiles
public abstract ConfigurableFileCollection getDeploymentResolvedWorkaround();

@Nested
public abstract QuarkusResolvedClasspath getPlatformConfiguration();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,10 @@ public Configuration getRuntimeConfiguration() {
return project.getConfigurations().getByName(this.runtimeConfigurationName);
}

public Configuration getRuntimeConfigurationWithoutResolvingDeployment() {
return project.getConfigurations().getByName(this.runtimeConfigurationName);
}

public Configuration getDeploymentConfiguration() {
return project.getConfigurations().getByName(this.deploymentConfigurationName);
}
Expand All @@ -308,6 +312,10 @@ public PlatformImports getPlatformImports() {
return platformImports.get(this.platformImportName);
}

public PlatformImports getPlatformImportsWithoutResolvingPlatform() {
return platformImports.get(this.platformImportName);
}

private Set<ExtensionDependency<?>> collectFirstMetQuarkusExtensions(Configuration configuration,
Collection<ExtensionDependency<?>> knownExtensions) {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
plugins {
java
id("io.quarkus")
}

repositories {
mavenCentral()
mavenLocal()
}


dependencies {
implementation("io.quarkus:quarkus-rest")
implementation("io.quarkus:quarkus-arc")
implementation(enforcedPlatform(project(":lib")))
testImplementation("io.quarkus:quarkus-junit5")
testImplementation("io.rest-assured:rest-assured")
}

group = "org.acme"
version = "1.0.0-SNAPSHOT"

tasks.withType<Test> {
systemProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager")
}
tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
options.compilerArgs.add("-parameters")
}

tasks.all{}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
quarkusPlatformArtifactId=quarkus-bom
quarkusPlatformGroupId=io.quarkus
kotlinVersion=${kotlin.version}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
pluginManagement {
repositories {
mavenLocal {
content {
includeGroupByRegex 'io.quarkus.*'
includeGroup 'org.hibernate.orm'
}
}
mavenCentral()
gradlePluginPortal()
}
plugins {
id 'io.quarkus' version "${quarkusPluginVersion}"
id 'org.jetbrains.kotlin.jvm' version "${kotlinVersion}"
id 'org.jetbrains.kotlin.plugin.allopen' version "${kotlinVersion}"
}
}
rootProject.name='java-platform-with-eager-resolution-project'
include(":lib")
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.acme;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from Quarkus REST";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.acme;

import io.quarkus.test.junit.QuarkusIntegrationTest;

@QuarkusIntegrationTest
class GreetingResourceIT extends GreetingResourceTest {
// Execute the same tests but in packaged mode.
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.acme;

import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;

@QuarkusTest
class GreetingResourceTest {
@Test
void testHelloEndpoint() {
given()
.when().get("/hello")
.then()
.statusCode(200)
.body(is("Hello from Quarkus REST"));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.quarkus.gradle;

import static org.assertj.core.api.Assertions.assertThat;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Path;

import org.junit.jupiter.api.Test;

public class JavaPlatformWithEagerResolutionTest extends QuarkusGradleWrapperTestBase {

@Test
public void shouldImportConditionalDependency() throws IOException, URISyntaxException, InterruptedException {

final File projectDir = getProjectDir("java-platform-with-eager-resolution-project");

runGradleWrapper(projectDir, "clean", ":quarkusBuild");

final File buildDir = new File(projectDir, "build");

final Path quarkusOutput = buildDir.toPath().resolve("quarkus-app");
assertThat(quarkusOutput.resolve("quarkus-run.jar")).exists();
}
}

0 comments on commit 1c9483d

Please sign in to comment.