是否可以直接针对由于包目标而不是源创建的jar文件运行maven,特别是spring-boot:run目标?
我想这样做的原因是因为我想在Docker容器中运行一个Spring Boot应用程序,该容器具有热插拔类(存储在主机上并使用共享卷映射到容器中)使用Spring boot Devtools(可悲的是如果您使用Java -jar运行应用程序,则不起作用,我也不想将应用程序的源代码放在容器中。
答案 0 :(得分:0)
classes
参数不是可选的(通常使用标准Maven项目结构推断),但您可以为其提供一个空目录,然后使用folders
参数包含以前打包的JAR。这是一个例子
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.this.that.YourApplication</mainClass>
<!-- any directory will do as long as (a) it exists and (b) it does not contain classes -->
<classesDirectory>/tmp/</classesDirectory>
<folders>
<folder>
<!-- the address, relative to the plugin's workingDirectory, of the 'original' application JAR -->
tmp/lib/your-application.jar.original
</folder>
</folders>
</configuration>
</plugin>
使用此配置,如果使用-X
运行,您将看到Spring Boot插件生成的JVM的类路径中的前两个条目是(1)您的应用程序JAR和(2)空classes目录。例如:
[DEBUG] Classpath for forked process: <full_path_removed>/tmp/lib/your-application.jar.original:/tmp:
注意:
mainClass
,因为您使用的原始JAR不包含META-INF / MANIFEST.MF中的Main-Class指令