我想为我的 Spring-Boot 应用程序添加一个备用入口点。我宁愿把它当作一个肥 jar 。这可能吗?
根据他们的documentation , 特性 loader.main
指定要启动的主类的名称。
我试过 java -jar MyJar.jar --loader.main=com.mycompany.AlternateMain
但是我的 pom.xml 中指定的 start-class 仍在运行(如果我从 pom.xml 中删除它,那么我会在打包过程中出错)。
或者,我尝试了 java -cp MyJar.jar com.mycompany.AlternateMain
但我不知道将所有嵌套 jar 添加到类路径的好方法。
有什么建议吗?
编辑:这是我使用的解决方案
按照 jst 的建议,我将启动器更改为使用 PropertiesLauncher。我通过修改我的 spring-boot-maven-plugin 的配置来做到这一点。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>${start-class}</mainClass>
<layout>ZIP</layout>
...
<layout>ZIP</layout>
triggers Spring Boot to use the PropertiesLauncher
.
我创建了我的 fat jar(mvn 包),然后像这样调用了备用 main:
java -jar -Dloader.main=com.mycompany.AlternateMain MyJar.jar
感谢您的帮助!
最佳答案
我采用了不同的方法并使用命令行参数来确定将哪个类用作我的 SpringApplication 类。我只有一个 main() 方法,但是基于命令行参数使用的具有不同配置的不同应用程序类。
我有一个包含 main() 的类:
public static void main(String[] args) {
SpringApplication app;
if( ArrayUtils.contains(args, "--createdb")){
app = new SpringApplication(CreateDB.class);
args = (String[])ArrayUtils.add(args, "--spring.jpa.hibernate.ddl-auto=create");
} else {
app = new SpringApplication(Application.class);
}
app.setWebEnvironment(false);
app.setShowBanner(false);
app.addListeners(new ConfigurationLogger());
// launch the app
ConfigurableApplicationContext context = app.run(args);
// finished so close the context
context.close();
}
但我有 2 个不同的 SpringApplication 类:Application.class 和 CreateDB.class。每个类定义了不同的 @ComponentScan
路径以及不同的 @EnableAutoConfiguration
选项和不同的 @Configuration
选项。最后,根据我的命令行参数,我可以决定是否以编程方式启用其他配置文件/等。
就我而言,我想要一个不同的启动器来创建数据库架构并退出,所以我强制使用命令行参数。
关于java - Spring Boot - 如何指定备用启动类? (多个入口点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076911/
调用 Maven 构建来指定替代文件来代替标准 pom.xml 文件名时是否有参数? 基本上,我需要使用各种配置来运行我的 Maven 构建的测试目标。现在我必须使用外部脚本来使用此配置更新标准 po
基本上我喜欢 PHP 和 SQL 的开发方面。目前我正在处理一个可能需要 MYSQL 复制功能的项目。下面提到的是我的一些要求,只是想知道是否有人可以提供他们的专家建议和提示,以防根据我的需要这是正确
我目前正在做一个教科书中的项目,我遇到了一个 while 循环的模糊问题。课本上的代码如下; while(getImage().getWidth(applet) <= 0); double x = a
如何全局更改Maven的.m2目录的位置? Maven使用${user.home}/.m2进行设置,存储库缓存等。 我知道我可以: 指向存储库缓存的其他目录(通过更改全局配置文件中的localRepo
我正在开发以下代码,一个备用 while 循环: _while = (cond, act) => cond && act() & _while(cond, act) 在这种情况下,act() 旨在每次
到目前为止,我读过的每个教程都说包名应该与您的域相反。但是,如果我没有域并想在市场上发布应用程序怎么办?我可以使用什么备用包命名约定? 最佳答案 随心所欲;这是任意的。 包命名就是为了防止冲突和创建功
您好,我们有一个包含大量 bean、JSP 等的项目。迫切需要在我们的环境中执行自动化测试(我们使用 Maven)。现在,我们可以轻松地为数据库项目层编写测试,为我们实现的各种安全实用程序编写测试。但
这更像是一个 CSS 问题,但我会在此处添加它,因为任何下划线开发人员都可能遇到过它。我有一个索引页面布局: ... ... ... ... 我想用替代文章的类 xyz 定位 div
我正在创建一个 DOM 元素,如下所示; var imgEle = document.createElement('img'); imgEle.src = imgURL;
在应用程序中,当创建特殊类型的对象时,我需要为它们中的每一个生成一个唯一标识。这些对象是通过工厂创建的,并且很有可能在“批量”操作中创建。我意识到框架中的“随机”毕竟不是那么“随机”,所以我尝试按如下
我正在寻找每日备份 sqlite 数据库的正确解决方案。数据库大约 5GB,有规律地增长,每秒接收新数据,并且处于 WAL 模式。该服务是 24/7 全天候服务,因此在备份期间无法停止任何操作。将数据
我正在设置一个多节点 hadoop 集群,并有一个节点之间无密码 SSH 的共享 key 。我将文件命名为 ~/.ssh/hadoop_rsa 并且可以使用 ssh -i ~/.ssh/hadoop_
我的结构如下: blah stuff 它会在整个动态页面中重复几次。我想用两种颜色交替 div 类“post”的背景颜色,但 CSS 的第 nth-child 伪类似乎只适用于直接顺序
例如 Jython 的版本是 2.5.1,这是否意味着它在 2.5.1 版本时与 cpython 语法并行保真? 最佳答案 通常是的,但从技术上讲,没有什么可以阻止替代实现选择他们想要的任何版本号。
我知道 h1 标签对 SEO 很重要,所以我所有的标题都是 H1(太棒了!) 现在,我需要在某些页面上有一个稍微不同的标题(作为文本的第一行)。 通常,我只是将 h1 复制为 h2 并交替使用。 问题
可以为 Perforce 推荐一个类似 P4Win 的替代方案,希望它支持搁置并且可能是开源的?不需要跨平台,只要 Windows 就可以了。 我这么问是因为我不喜欢新的 P4V 界面,而且我发现 P
大家好,提前寻求帮助:我正在尝试将第二个标题添加到自定义临时页面,并在该备用标题中添加一个不同于 style.css 的备用 css 文件。 我像这样从 cat 模板页面调用了自定义 header
我在这里遇到了一些麻烦。我想在鼠标悬停在 div 之后显示图像。 HTML: CSS: #testmouseover { left: -9px; top: -9px;
这个问题在这里已经有了答案: How do I switch my CSS stylesheet using jQuery? (5 个答案) 关闭 9 年前。
有人知道是否有一些用于 Direct X 的替代 API,我的意思是只是 GUI 库!没有像我们在 DXUT 中那样重新实现 Direct X。 最佳答案 对于 Windows 10 上的 Windo
我是一名优秀的程序员,十分优秀!