1

I'm trying to prototype a structure in which several @SpringBootApplications are segregated by means of their packaging namespaces, like so:

![enter image description here

In Maven pom.xml, to build, I'm relying on profiles, as shown below, and described here and here:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <mainClass>
                                ${spring.boot.mainclass}
                            </mainClass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M6</version>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>dcr</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
        <profile>
            <id>other</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
    </profiles>

</project>

My attempts to build the codebase (per spring-boot-maven-plugin spec) result in the following:

>mvn clear package -Drun.profiles=dcr



[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage (repackage) on project downstream-data-factory: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage failed: Unable to find a single main class from the following candidates [com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication, com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage (repackage) on project downstream-data-factory: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage failed: Unable to find a single main class from the following candidates [com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication, com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication]
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage failed: Unable to find a single main class from the following candidates [com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication, com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication]
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IllegalStateException: Unable to find a single main class from the following candidates [com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication, com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication]
    at org.springframework.boot.loader.tools.MainClassFinder$SingleMainClassCallback.getMainClassName (MainClassFinder.java:432)
    at org.springframework.boot.loader.tools.MainClassFinder$SingleMainClassCallback.access$100 (MainClassFinder.java:403)
    at org.springframework.boot.loader.tools.MainClassFinder.findSingleMainClass (MainClassFinder.java:198)
    at org.springframework.boot.loader.tools.Packager.findMainMethod (Packager.java:318)
    at org.springframework.boot.loader.tools.Packager.findMainMethodWithTimeoutWarning (Packager.java:307)
    at org.springframework.boot.loader.tools.Packager.getMainClass (Packager.java:302)
    at org.springframework.boot.loader.tools.Packager.addMainAndStartAttributes (Packager.java:282)
    at org.springframework.boot.loader.tools.Packager.buildManifest (Packager.java:267)
    at org.springframework.boot.loader.tools.Packager.write (Packager.java:209)
    at org.springframework.boot.loader.tools.Packager.write (Packager.java:202)
    at org.springframework.boot.loader.tools.Repackager.repackage (Repackager.java:144)
    at org.springframework.boot.loader.tools.Repackager.repackage (Repackager.java:131)
    at org.springframework.boot.maven.RepackageMojo.repackage (RepackageMojo.java:216)
    at org.springframework.boot.maven.RepackageMojo.execute (RepackageMojo.java:206)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR]

Though the above reference suggests invocation via -Drun.profiles=dcr, the regular Maven way, via -P dcr was also tried, unsuccessfully. It returns the same error message.

What am I missing?

The above approach is also referred to here - is that answer incrorrect?

Thank you in advance.


Some further experiments lead me to believe that the culprit is somewhere within the spring-boot-maven-pluginconfiguration/invocation as even when I disable profiles stanza in pom.xml completely, the error message remains the same, it doesn't distinguish between the 2 profiles and doesn't substitute the ${spring.boot.mainclass} property:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <mainClass>
                                ${spring.boot.mainclass}
                            </mainClass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M6</version>
            </plugin>
        </plugins>
    </build>
<!-- 
    <profiles>
        <profile>
            <id>dcr</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
        <profile>
            <id>other</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
    </profiles>
-->
</project>

The same error persists when plugins are configured slightly differently, without using profiles:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>repackage-dcr</id>
                    <phase>package</phase>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication</mainClass>
                        <finalName>dcr</finalName>
                        <outputDirectory>target/apps</outputDirectory>
                    </configuration>
                </execution>
                <execution>
                    <id>repackage-other</id>
                    <phase>package</phase>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication</mainClass>
                        <finalName>other</finalName>
                        <outputDirectory>target/apps</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M6</version>
        </plugin>
    </plugins>
</build>

and invoked with simple mvn clean package.

Reading more carefully into the Spring Boot Maven plugin documentation, looks like it's not intended to recognize Maven profiles at all, making the foundation on which this experiment is based, referred to above so much shakier:

enter image description here

Full pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.13</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.pru.globalpayments</groupId>
    <artifactId>downstream-data-factory</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>downstream-data-factory</name>
    <description>Contains logic for generation of feeds expected by the downstream systems</description>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <sonar.language>js</sonar.language>
        <sonar.sources>src/main/java</sonar.sources>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.beanio</groupId>
            <artifactId>beanio</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <!--
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.13.0</version>
        </dependency>
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>4.11.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.datafaker</groupId>
            <artifactId>datafaker</artifactId>
            <version>1.8.0</version>
            <!--<scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <version>4.11.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jeasy</groupId>
            <artifactId>easy-random-core</artifactId>
            <version>4.3.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>
                        ${spring.boot.mainclass}
                    </mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M6</version>
            </plugin>
        </plugins>
    </build>


    <profiles>
        <profile>
            <id>dcr</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
        <profile>
            <id>other</id>
            <properties>
                <spring.boot.mainclass>com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication</spring.boot.mainclass>
            </properties>
        </profile>
    </profiles>

</project>
Simeon Leyzerzon
  • 18,658
  • 9
  • 54
  • 82

1 Answers1

0

Seems mainClass configuration is not placed in the right place:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>${spring.boot.mainclass}</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>                        
        </execution>
    </executions>
</plugin>

https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#packaging

$ mvn clean package -P other
[INFO] Scanning for projects...
[INFO]
[INFO] -----------< com.pru.globalpayments:downstream-data-factory >-----------
[INFO] Building downstream-data-factory 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ downstream-data-factory ---
[INFO] Deleting D:\workspace\downstream-data-factory\target
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ downstream-data-factory ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ downstream-data-factory ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to D:\workspace\downstream-data-factory\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ downstream-data-factory ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.10.1:testCompile (default-testCompile) @ downstream-data-factory ---
[INFO] Changes detected - recompiling the module!
[INFO]
[INFO] --- maven-surefire-plugin:3.0.0-M6:test (default-test) @ downstream-data-factory ---
[INFO]
[INFO] --- maven-jar-plugin:3.2.2:jar (default-jar) @ downstream-data-factory ---
[INFO] Building jar: D:\workspace\downstream-data-factory\target\downstream-data-factory-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.7.13:repackage (repackage) @ downstream-data-factory ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- spring-boot-maven-plugin:2.7.13:repackage (default) @ downstream-data-factory ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  17.005 s
[INFO] Finished at: 2023-08-01T16:52:35+02:00
[INFO] ------------------------------------------------------------------------

$ java -jar target/downstream-data-factory-0.0.1-SNAPSHOT.jar
AnotherSystemDataFactoryApplication running...

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.7.13)

2023-08-01 16:52:41.465  INFO 8480 --- [           main] .d.a.AnotherSystemDataFactoryApplication : Starting AnotherSystemDataFactoryApplication v0.0.1-SNAPSHOT using Java 1.8.0_311 on X with PID 8480 (D:\workspace\downstream-data-factory\target\downstream-data-factory-0.0.1-SNAPSHOT.jar started by Valijon in D:\workspace\downstream-data-factory)
2023-08-01 16:52:41.487  INFO 8480 --- [           main] .d.a.AnotherSystemDataFactoryApplication : No active profile set, falling back to 1 default profile: "default"
2023-08-01 16:52:48.635  INFO 8480 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2023-08-01 16:52:48.667  INFO 8480 --- [           main] .d.a.AnotherSystemDataFactoryApplication : Started AnotherSystemDataFactoryApplication in 8.93 seconds (JVM running for 10.584)
Valijon
  • 12,667
  • 4
  • 34
  • 67
  • This is failing with the same error: ```[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage[m [1m(repackage)[m on project [36mdownstream-data-factory[m: [1;31mExecution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.7.13:repackage failed: Unable to find a single main class from the following candidates [com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication, com.pru.globalpayments.feeds.downstream.dailycashreport.DcrDataFactoryApplication][m -> [1m[Help 1][m``` – Simeon Leyzerzon Aug 01 '23 at 13:20
  • @SimeonLeyzerzon I've tested with `spring-boot-maven-plugin:3.1.2`. Let me see previous versions – Valijon Aug 01 '23 at 13:49
  • @SimeonLeyzerzon with `spring-boot-maven-plugin:2.7.13` works fine! – Valijon Aug 01 '23 at 13:59
  • My version is 2.7.13 as is clear from the error message. In any case, looks like this plugin doesn't recognize Maven profiles, see my updates. – Simeon Leyzerzon Aug 01 '23 at 13:59
  • @SimeonLeyzerzon please, update your question and share your current `spring-boot-maven-plugin` setup – Valijon Aug 01 '23 at 14:02
  • Do you have some codebase you could link to to see what works fine for you? – Simeon Leyzerzon Aug 01 '23 at 14:03
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/254750/discussion-between-valijon-and-simeon-leyzerzon). – Valijon Aug 01 '23 at 14:03
  • I cannot use chat - it is blocked for me here. What do you mean by `spring-boot-maven-plugin` setup? I could post the whole `pom.xml` if that helps – Simeon Leyzerzon Aug 01 '23 at 14:05
  • can you share pom.xml? – Valijon Aug 01 '23 at 14:06
  • @SimeonLeyzerzon try please https://github.com/Valijon/downstream-data-factory – Valijon Aug 01 '23 at 14:28
  • @SimeonLeyzerzon also try to remove `spring-boot-maven-plugin` files and run `mvn clean package -P dcr` to download them again: `C:\Users\YOUR_USER\.m2\repository\org\springframework\boot\spring-boot-maven-plugin\2.7.13` – Valijon Aug 01 '23 at 14:33
  • Thanks, will try running that minimal version in a separate repo shortly. Also, seeing a bit of a discrepancy where the fully classified name of the `AnotherSystemDataFactoryApplication` is `com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication.AnotherSystemDataFactoryApplication` according to your package definition but supposedly gets picked by `com.pru.globalpayments.feeds.downstream.anothersystem.AnotherSystemDataFactoryApplication` in the pom.xml. You ran it via `mvn clean package -P other`? – Simeon Leyzerzon Aug 01 '23 at 14:44
  • @SimeonLeyzerzon yes, i will share all `mvn clean package -P other` traces – Valijon Aug 01 '23 at 14:49