Java – use POM to wrap the spring boot of agrigator
Is it possible to use the spring boots Maven plug-in command spring boot: run when the parent POM of the project uses the packaging mode POM because of its child nodes?
I have a multi module Maven project with a "master" POM, which is a child of the spring boot parent module It looks like this:
<modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>project</artifactId> <packaging>pom</packaging> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.0.BUILD-SNAPSHOT</version> <relativePath/> </parent> <modules> <module>module1</module> <module>module2</module> <module>module3</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>com.example.module1.Application</start-class> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
This is basically our "master" POM, and every child uses it as its parents Now we will execute the spring boot: run command from the working directory where the "master" POM is located The problem is that this will produce a strange classnotfoundexception, because module1 (where the application class is located) is included in POM and mentioned as a module
Using a single module Maven project and < packaging > jar < / packaging > will compile and run the application class, so spring boot does not work here
When dealing with the multi module Maven project, what do I need to do to change it in order to use the spring boot Maven plugin plug-in?
Side note: my application class / module 1 has other modules as dependencies, so keep this in mind when answering questions Any suggestions on how to improve this will be greatly appreciated
Solution
As far as I know, this is impossible because the plug-in needs an executable jar to run
The "running" document of the spring boot plugin target says:
Wrapping POM does not create an executable It only generates a POM xml.
Try running MVN install and view the artifacts deployed to the local repository:
I just did one thing for the module packaging POM:
[INFO] Installing C:\projects\boot-parent\pom.xml to C:\Users\...\repository\no\boot-parent\0.0.1-SNAPSHOT\boot-parent-0.0.1-SNAPSHOT.pom
As you can see, the artifact is boot-parent-0.0 1-SNAPSHOT. pom.
Try to put the plug - in configuration in the POM of module 1 with start - class (main - class) and packaged jar
Edit your comment:
Your comments indicate that there is a problem with your client Maven installation Look at this answer Especially the answer given by @ Christian Achilli
Again, I hope it helps!
Thomas