diff --git a/build.gradle b/build.gradle index bb532fb71..f288ed7f5 100644 --- a/build.gradle +++ b/build.gradle @@ -567,10 +567,10 @@ tasks.named('bootRun') { tasks.named('build') { group = 'build' - description = 'Delegates to :stirling-pdf:build' - dependsOn ':stirling-pdf:build' + description = 'Delegates to :stirling-pdf:bootJar' + dependsOn ':stirling-pdf:bootJar' doFirst { - println "Delegating to :stirling-pdf:build" + println "Delegating to :stirling-pdf:bootJar" } } \ No newline at end of file diff --git a/common/src/main/java/stirling/software/common/configuration/AppConfig.java b/common/src/main/java/stirling/software/common/configuration/AppConfig.java index 1acebeaf4..b0d87e617 100644 --- a/common/src/main/java/stirling/software/common/configuration/AppConfig.java +++ b/common/src/main/java/stirling/software/common/configuration/AppConfig.java @@ -20,6 +20,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; import org.springframework.context.annotation.Scope; import org.springframework.core.annotation.Order; import org.springframework.core.env.Environment; @@ -258,22 +259,25 @@ public class AppConfig { @Bean(name = "runningProOrHigher") - @ConditionalOnMissingBean(name = "runningProOrHigher") + @Profile("default") public boolean runningProOrHigher() { return false; } @Bean(name = "runningEE") + @Profile("default") public boolean runningEnterprise() { return false; } @Bean(name = "GoogleDriveEnabled") + @Profile("default") public boolean googleDriveEnabled() { return false; } @Bean(name = "license") + @Profile("default") public String licenseType() { return "NORMAL"; } diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/configuration/ee/EEAppConfig.java b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/ee/EEAppConfig.java index 85a6cc310..b299f5d73 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/configuration/ee/EEAppConfig.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/ee/EEAppConfig.java @@ -5,6 +5,7 @@ import static stirling.software.proprietary.security.configuration.ee.KeygenLice import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; @@ -28,18 +29,21 @@ public class EEAppConfig { migrateEnterpriseSettingsToPremium(this.applicationProperties); } + @Profile("security") @Bean(name = "runningProOrHigher") @Primary public boolean runningProOrHigher() { return licenseKeyChecker.getPremiumLicenseEnabledResult() != License.NORMAL; } + @Profile("security") @Bean(name = "license") @Primary public String licenseType() { return licenseKeyChecker.getPremiumLicenseEnabledResult().name(); } + @Profile("security") @Bean(name = "runningEE") @Primary public boolean runningEnterprise() { @@ -51,6 +55,7 @@ public class EEAppConfig { return applicationProperties.getPremium().getProFeatures().isSsoAutoLogin(); } + @Profile("security") @Bean(name = "GoogleDriveEnabled") @Primary public boolean googleDriveEnabled() { diff --git a/stirling-pdf/build.gradle b/stirling-pdf/build.gradle index 18125c49e..cc0fcc9ae 100644 --- a/stirling-pdf/build.gradle +++ b/stirling-pdf/build.gradle @@ -103,16 +103,22 @@ sourceSets { } -// Configure regular jar (remove -plain classifier) +// Disable regular jar jar { - archiveClassifier.set("") // Remove the -plain classifier + enabled = false +} + +// Configure and enable bootJar for this project +bootJar { + enabled = true duplicatesStrategy = DuplicatesStrategy.EXCLUDE zip64 = true - from { - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } - + // Don't include all dependencies directly like the old jar task did + // from { + // configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + // } + // Exclude signature files to prevent "Invalid signature file digest" errors exclude 'META-INF/*.SF' exclude 'META-INF/*.DSA' @@ -121,17 +127,11 @@ jar { manifest { attributes( - 'Main-Class': 'stirling.software.SPDF.SPDFApplication', 'Implementation-Title': 'Stirling-PDF', 'Implementation-Version': project.version ) } } -// Enable bootJar for this project -bootJar { - enabled = true -} - -jar.dependsOn ':common:jar' -jar.dependsOn ':proprietary:jar' \ No newline at end of file +bootJar.dependsOn ':common:jar' +bootJar.dependsOn ':proprietary:jar' \ No newline at end of file diff --git a/stirling-pdf/src/main/java/stirling/software/SPDF/SPDFApplication.java b/stirling-pdf/src/main/java/stirling/software/SPDF/SPDFApplication.java index 85fcf8c54..ffc692b70 100644 --- a/stirling-pdf/src/main/java/stirling/software/SPDF/SPDFApplication.java +++ b/stirling-pdf/src/main/java/stirling/software/SPDF/SPDFApplication.java @@ -204,17 +204,35 @@ public class SPDFApplication { } private static String[] getActiveProfile(String[] args) { - if (args == null) { - return new String[] {"default"}; - } - - for (String arg : args) { - if (arg.contains("spring.profiles.active")) { - return arg.substring(args[0].indexOf('=') + 1).split(", "); + // 1. Check for explicitly passed profiles + if (args != null) { + for (String arg : args) { + if (arg.startsWith("--spring.profiles.active=")) { + String[] provided = arg.substring(arg.indexOf('=') + 1).split(","); + if (provided.length > 0) { + log.info("#######0000000000000###############################"); + return provided; + } + } } } - - return new String[] {"default"}; + log.info("######################################"); + // 2. Detect if SecurityConfiguration is present on classpath + if (isClassPresent("stirling.software.proprietary.security.configuration.SecurityConfiguration")) { + log.info("security"); + return new String[] { "security" }; + } else { + log.info("default"); + return new String[] { "default" }; + } + } + private static boolean isClassPresent(String className) { + try { + Class.forName(className, false, SPDFApplication.class.getClassLoader()); + return true; + } catch (ClassNotFoundException e) { + return false; + } } public static String getStaticBaseUrl() {