我们有一个项目,我们正在创建一个部署到 JBoss 的 Web 应用程序。Maven、war 打包等。现在客户端要求我们为应用程序包含一个命令行界面,说用户还应该能够在 war 中的某个地方启动 main 方法(无论应用程序是否当前是否部署在 JBoss 上)。
我有点不知所措。我在这里搜索并在 Google 上进行了许多不同的搜索,并且找到了 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 文件。但是后来war的结构似乎需要遵循一个“正常”的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 文件的根目录。现在有类依赖的 jars(例如 log4j)。所以现在我发现自己使用 antrun 来解压必要的 jar,将这些类文件放在战争的根目录中......
这似乎……很疯狂。有没有更好的办法?
编辑了更多信息CLI 功能需要访问数据库,因此不幸的是需要许多类(所有 DAO/EBO/配置类)