是否有一个很好的方法让我的战争也可以作为一个罐子执行

时间:2013-09-17 07:39:02

标签: java maven war packaging app-launcher

我们有一个项目,我们正在创建一个部署到JBoss的Web应用程序。 Maven,war packaging等。现在客户端要求我们为应用程序添加命令行界面,说用户也应该能够在战争中的某个地方启动主要方法(无论应用程序是否是目前部署在JBoss上还是没有。)

我有点不知所措。我在这里搜索了许多不同的搜索结果,并且我找到了Jetty / Jenkins的例子,但这些例子似乎只有一个类文件需要以jar形式运行。

目前该项目的战争结构如下:

-resources
-META-INF
---MANIFEST.MF, et al
-WEB-INF
---web.xml, classes(com/*), lib, et al

我正在让Maven使用java -jar为我要调用的类设置带有Main-Class的MANIFEST.MF文件。但是战争的结构似乎需要遵循“正常”的jar结构,如下所示:

-resources
-com/*/main.class
-META-INF
---MANIFEST.MF, et al
-WEB-INF
---web.xml, classes(com/*), lib, et al

但是main.class依赖于应用程序中的其他类,所以我发现自己在这两个地方放置了越来越多的代码,用于jar功能和战争。

好的,所以我使用Maven + antrun将类文件从WEB-INF / classes复制到war文件的根目录。现在有类依赖的jar(例如,log4j)。所以我现在发现自己使用antrun来解开必要的罐子,将THOSE类文件放在战争的根源中......

这似乎......疯了。有没有(更好的)方式?

使用更多信息进行编辑 CLI功能需要访问数据库,因此遗憾的是需要许多类(所有DAO / EBO /配置类)

0 个答案:

没有答案