作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 spring boot maven 插件为我创建一个带有依赖项的 jar。问题是,我需要作为 Windows 服务启动,而 WinSW 需要一个启动类。事情是所有的依赖都隐藏在 BOOT-INF/lib
中和 BOOT-INF/classes
中的类.
my-boot.jar
\
\BOOT-INF
\BOOT-INF\lib (jar dependencies)
\BOOT-INF\classes (compiled output)
\org\springframework... (Spring boot loader)
\com\mejmo\ServiceHelper.class <- here should be my class
org.springframework.loader.*
是 Spring Boot 应用程序的启动序列 + 类加载器)。该服务不能直接调用 spring 引导加载程序,但在我处理启动/停止命令的类的帮助下。
lib/
以便 Windows 服务可以加载包含自定义类的 jar。问题是当所有依赖项都在 jar 中时。
org.springframework.boot.*
也适用于我的 ServiceHelper 类(class)!所以这让它变得更加复杂:(
最佳答案
Gradle
将资源添加到 JAR 是由 Spring Boot Gradle Plugin 直接提供的:
bootJar {
with copySpec {
from "$buildDir/classes/java/main/com/mejmo/ServiceHelper.class"
into 'com/mejmo'
}
}
zipfileset
如文档中所述,可以使用:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>addExtractedJarOnRootLevel</id>
<phase>package</phase>
<configuration>
<target>
<zip destfile="${project.build.directory}/${project.artifactId}-${project.version}.jar"
update="yes" compress="false">
<zipfileset src="${GROUP_ID:ARTIFACT_ID:jar}" />
</zip>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
package
相也。因此,
maven-antrun-plugin
必须“低于”
spring-boot-maven-plugin
在 pom.xml 中。
spring-boot-maven-plugin
必须配置为
<executable>false</executable>
,所以没有
embeddedLaunchScript
添加在 JAR 前面。
关于java - 如何将自定义类与 Spring Boot 加载器一起打包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48769185/
我是一名优秀的程序员,十分优秀!