Skip to content

Commit

Permalink
Upgrade to Quarkus 3.2.4.Final
Browse files Browse the repository at this point in the history
  • Loading branch information
gsmet committed Aug 11, 2023
1 parent 4cf49d7 commit c7f5806
Show file tree
Hide file tree
Showing 16 changed files with 1,362 additions and 1,166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;

import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
Expand All @@ -21,7 +19,6 @@
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.eclipse.aether.repository.RemoteRepository;

Expand All @@ -38,10 +35,6 @@
@Mojo(name = "build", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, threadSafe = true)
public class BuildMojo extends QuarkusBootstrapMojo {

static final String PACKAGE_TYPE_PROP = "quarkus.package.type";
static final String NATIVE_PROFILE_NAME = "native";
static final String NATIVE_PACKAGE_TYPE = "native";

@Component
MavenProjectHelper projectHelper;

Expand Down Expand Up @@ -125,14 +118,7 @@ protected void doExecute() throws MojoExecutionException {
// Essentially what this does is to enable the native package type even if a different package type is set
// in application properties. This is done to preserve what users expect to happen when
// they execute "mvn package -Dnative" even if quarkus.package.type has been set in application.properties
if (!System.getProperties().containsKey(PACKAGE_TYPE_PROP)
&& isNativeProfileEnabled(mavenProject())) {
Object packageTypeProp = mavenProject().getProperties().get(PACKAGE_TYPE_PROP);
String packageType = NATIVE_PACKAGE_TYPE;
if (packageTypeProp != null) {
packageType = packageTypeProp.toString();
}
System.setProperty(PACKAGE_TYPE_PROP, packageType);
if (!setPackageTypeSystemPropertyIfNativeProfileEnabled()) {
propertiesToClear.add(PACKAGE_TYPE_PROP);
}

Expand Down Expand Up @@ -193,17 +179,6 @@ && isNativeProfileEnabled(mavenProject())) {
}
}

boolean isNativeProfileEnabled(MavenProject mavenProject) {
// gotcha: mavenProject.getActiveProfiles() does not always contain all active profiles (sic!),
// but getInjectedProfileIds() does (which has to be "flattened" first)
Stream<String> activeProfileIds = mavenProject.getInjectedProfileIds().values().stream().flatMap(List<String>::stream);
if (activeProfileIds.anyMatch(NATIVE_PROFILE_NAME::equalsIgnoreCase)) {
return true;
}
// recurse into parent (if available)
return Optional.ofNullable(mavenProject.getParent()).map(this::isNativeProfileEnabled).orElse(false);
}

@Override
public void setLog(Log log) {
super.setLog(log);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.quarkus.devtools.commands.data.QuarkusCommandException;
import io.quarkus.devtools.messagewriter.MessageWriter;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.JavaVersion;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import io.quarkus.maven.utilities.MojoUtils;
Expand Down Expand Up @@ -117,7 +118,7 @@ public void execute() throws MojoExecutionException {
.artifactResolver(mvn)
.build();
final CreateJBangProject createJBangProject = new CreateJBangProject(QuarkusProject.of(projectDirPath, catalog,
codestartsResourceLoader, log, BuildTool.MAVEN))
codestartsResourceLoader, log, BuildTool.MAVEN, new JavaVersion(javaVersion)))
.extensions(extensions)
.javaVersion(javaVersion)
.setValue(NO_JBANG_WRAPPER, noJBangWrapper);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import io.quarkus.devtools.commands.CreateProjectHelper;
import io.quarkus.devtools.messagewriter.MessageWriter;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.JavaVersion;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import io.quarkus.maven.components.MavenVersionEnforcer;
Expand Down Expand Up @@ -297,7 +298,7 @@ public void execute() throws MojoExecutionException {
.artifactResolver(mvn)
.build();
QuarkusProject newProject = QuarkusProject.of(projectDirPath, catalog,
codestartsResourceLoader, log, buildToolEnum);
codestartsResourceLoader, log, buildToolEnum, new JavaVersion(javaVersion));
final CreateProject createProject = new CreateProject(newProject)
.groupId(projectGroupId)
.artifactId(projectArtifactId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.List;
import java.util.function.Consumer;

import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
Expand Down Expand Up @@ -37,6 +38,9 @@ public class DependencyTreeMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
protected MavenProject project;

@Parameter(defaultValue = "${session}", readonly = true)
protected MavenSession session;

@Parameter(defaultValue = "${project.remoteProjectRepositories}", readonly = true, required = true)
private List<RemoteRepository> repos;

Expand Down Expand Up @@ -130,6 +134,7 @@ private void logTree(final Consumer<String> log) throws MojoExecutionException {
protected MavenArtifactResolver resolver() {
return resolver == null
? resolver = workspaceProvider.createArtifactResolver(BootstrapMavenContext.config()
.setUserSettings(session.getRequest().getUserSettingsFile())
// The system needs to be initialized with the bootstrap model builder to properly interpolate system properties set on the command line
// e.g. -Dquarkus.platform.version=xxx
//.setRepositorySystem(repoSystem)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1137,6 +1137,7 @@ private QuarkusDevModeLauncher newLauncher(Boolean debugPortOk, String bootstrap
bootstrapProvider.close();
} else {
final BootstrapMavenContextConfig<?> mvnConfig = BootstrapMavenContext.config()
.setUserSettings(session.getRequest().getUserSettingsFile())
.setRemoteRepositories(repos)
.setWorkspaceDiscovery(true)
.setPreferPomsFromWorkspace(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.List;
import java.util.Set;

import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
Expand Down Expand Up @@ -43,6 +44,9 @@ public class GoOfflineMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
MavenProject project;

@Parameter(defaultValue = "${session}", readonly = true)
MavenSession session;

@Component
RepositorySystem repoSystem;

Expand Down Expand Up @@ -118,6 +122,7 @@ public void execute() throws MojoExecutionException, MojoFailureException {

private MavenArtifactResolver getResolver() throws MojoExecutionException {
return workspaceProvider.createArtifactResolver(BootstrapMavenContext.config()
.setUserSettings(session.getRequest().getUserSettingsFile())
.setCurrentProject(project.getBasedir().toString())
.setRemoteRepositoryManager(remoteRepositoryManager)
.setRemoteRepositories(repos)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.stream.Stream;

import org.apache.maven.AbstractMavenLifecycleParticipant;
import org.apache.maven.execution.MavenSession;
Expand Down Expand Up @@ -34,6 +36,10 @@ public abstract class QuarkusBootstrapMojo extends AbstractMojo {

static final String CLOSE_BOOTSTRAPPED_APP = "closeBootstrappedApp";

static final String NATIVE_PACKAGE_TYPE = "native";
static final String NATIVE_PROFILE_NAME = "native";
static final String PACKAGE_TYPE_PROP = "quarkus.package.type";

@Component
protected QuarkusBootstrapProvider bootstrapProvider;

Expand Down Expand Up @@ -293,4 +299,36 @@ protected CuratedApplication bootstrapApplication(LaunchMode mode) throws MojoEx
protected Properties getBuildSystemProperties(boolean quarkusOnly) throws MojoExecutionException {
return bootstrapProvider.bootstrapper(this).getBuildSystemProperties(this, quarkusOnly);
}

/**
* Essentially what this does is to enable the native package type even if a different package type is set
* in application properties. This is done to preserve what users expect to happen when
* they execute "mvn package -Dnative" even if quarkus.package.type has been set in application.properties
*
* @return true if the package type system property was set, otherwise - false
*/
protected boolean setPackageTypeSystemPropertyIfNativeProfileEnabled() {
if (!System.getProperties().containsKey(PACKAGE_TYPE_PROP)
&& isNativeProfileEnabled(mavenProject())) {
Object packageTypeProp = mavenProject().getProperties().get(PACKAGE_TYPE_PROP);
String packageType = NATIVE_PACKAGE_TYPE;
if (packageTypeProp != null) {
packageType = packageTypeProp.toString();
}
System.setProperty(PACKAGE_TYPE_PROP, packageType);
return true;
}
return false;
}

private boolean isNativeProfileEnabled(MavenProject mavenProject) {
// gotcha: mavenProject.getActiveProfiles() does not always contain all active profiles (sic!),
// but getInjectedProfileIds() does (which has to be "flattened" first)
Stream<String> activeProfileIds = mavenProject.getInjectedProfileIds().values().stream().flatMap(List<String>::stream);
if (activeProfileIds.anyMatch(NATIVE_PROFILE_NAME::equalsIgnoreCase)) {
return true;
}
// recurse into parent (if available)
return Optional.ofNullable(mavenProject.getParent()).map(this::isNativeProfileEnabled).orElse(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,9 @@ private MavenArtifactResolver artifactResolver(QuarkusBootstrapMojo mojo, Launch
if (mode == LaunchMode.DEVELOPMENT || mode == LaunchMode.TEST || isWorkspaceDiscovery(mojo)) {
return workspaceProvider.createArtifactResolver(
BootstrapMavenContext.config()
// it's important to pass user settings in case the process was not launched using the original mvn script
// for example using org.codehaus.plexus.classworlds.launcher.Launcher
.setUserSettings(mojo.mavenSession().getRequest().getUserSettingsFile())
.setCurrentProject(mojo.mavenProject().getFile().toString())
.setPreferPomsFromWorkspace(true)
.setProjectModelProvider(getProjectMap(mojo.mavenSession())::get));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Collections;
import java.util.List;

import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
Expand All @@ -29,6 +30,7 @@
import io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver;
import io.quarkus.devtools.messagewriter.MessageWriter;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.JavaVersion;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import io.quarkus.devtools.project.buildfile.MavenProjectBuildFile;
Expand All @@ -51,6 +53,9 @@ public abstract class QuarkusProjectMojoBase extends AbstractMojo {
@Parameter(defaultValue = "${project}")
protected MavenProject project;

@Parameter(defaultValue = "${session}", readonly = true)
MavenSession session;

@Component
protected RepositorySystem repoSystem;

Expand Down Expand Up @@ -106,7 +111,7 @@ public void execute() throws MojoExecutionException {
final List<ResourceLoader> codestartsResourceLoader = getCodestartResourceLoaders(resolveExtensionCatalog());
quarkusProject = QuarkusProject.of(baseDir(), resolveExtensionCatalog(),
codestartsResourceLoader,
log, buildTool);
log, buildTool, JavaVersion.NA);
}

doExecute(quarkusProject, getMessageWriter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ protected MavenArtifactResolver catalogArtifactResolver() throws MojoExecutionEx
@Override
protected MavenArtifactResolver initArtifactResolver() throws MojoExecutionException {
return workspaceProvider.createArtifactResolver(BootstrapMavenContext.config()
.setUserSettings(session.getRequest().getUserSettingsFile())
.setRemoteRepositoryManager(remoteRepositoryManager)
// The system needs to be initialized with the bootstrap model builder to properly interpolate system properties set on the command line
// e.g. -Dquarkus.platform.version=xxx
Expand Down
Loading

0 comments on commit c7f5806

Please sign in to comment.