java如何使用Maven在现有Spring引导应用程序中利用属性文件?
我正试图利用现有的Spring Boot应用程序,该应用程序托管在我公司的Maven存储库中。此应用程序从Kafka服务器获取消息并将其放入Mongo数据库中。要使其正常工作,只需为其提供一个定义Kafka和Mongo服务器的属性文件。我需要创建一个Maven项目,将此应用程序作为依赖项导入,并为其提供一个用于配置的属性文件。只有两个文件应该是pom。xml及其应用。财产。最终结果应该是一个可运行的JAR,它使用我的属性文件执行依赖项(现有的Spring启动应用程序)
在解决这一问题时,我别无选择,只能采取不同的方法
我花了无数个小时试图配置Maven来实现这一点。当使用mvn spring-boot:run
命令时,我终于成功地使它工作起来,但是我无法使它产生一个正常工作的可运行JAR文件
我像任何其他人一样包括我的依赖关系:
<dependencies>
<dependency>
<groupId>com.company.dept</groupId>
<artifactId>consume-to-mongo-app</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
然后,我从依赖项中定义主类,如下所示:
<properties>
<mainClass>org.springframework.boot.loader.JarLauncher</mainClass>
</properties>
我的插件部分如下所示:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>org.springframework.boot.loader.JarLauncher</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
<mainClass>org.springframework.boot.loader.JarLauncher</mainClass>
</configuration>
</execution>
</executions>
</plugin>
应用程序在运行mvn spring-boot:run
时运行正常
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.4.RELEASE)
在运行mvn clean package
之后java -jar myjar.jar
我得到了数千个:
)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.reflect.InvocationTargetException
... 1024 more
# 1 楼答案
我能够通过使用Maven Assembly插件创建一个包含依赖项JAR和属性文件的定制压缩ZIP文件来解决我的问题。在部署服务器上,可以提取这个ZIP,jar可以在生成的目录中运行,它将获取属性文件。我遵循了这个教程:https://medium.com/@kasunpdh/using-the-maven-assembly-plugin-to-build-a-zip-distribution-5cbca2a3b052
我在教程中做了一些修改,使最终的ZIP结构直接包含Spring Boot应用程序依赖项的JAR和属性文件,而不包含其他目录。这是我修改过的拉链。xml文件: