繁体   English   中英

jar 顶层内的多个入口点(主类)

[英]Multiple entry points (main classes) inside jar's top level

值得一提的是,我使用 maven 作为我的构建管理工具。 我有一个 jar (我们称之为dep.jar )将作为依赖项包含在最终项目( final.jar )中。 dep.jar有一个 class 和 main 方法。 我需要在我的final.jar的顶级目录中有几个入口点(带有主要方法的类),以便我可以根据需要使用入口点。 包括来自dep.jar的一个。

我考虑过:

  1. 更改 jar 中META-INF/MANIFEST.MF文件。 As Oracle stated that is not possible to reference main classes inside jar's dependencies ( BOOT-INF/lib directory) -> https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html ;
  2. Uber jar - 不是一个选项,我依赖于 Java 代码库中的 jar 目录结构
  3. 使用像这样的特殊 class 装载机http://www.jdotsoft.com/JarClassLoader.php 但这意味着更改final.jar的主要方法,由于项目限制,我不能这样做。
  4. 使用maven-dependency-plugin但它可以解压内部 jar ( dep.jar ) 并将类复制到BOOT-INF/classes工作目录target ,在打包阶段将被打包到 BO 同样,我不能从那里引用主要类。 如果我解压缩并将它们复制到与target不同的地方 - 复制的类将不会出现在我的final.jar

Is there any other plugin or option how to add classes from final.jar dependant jar dep.jar during JAR build to final.jar 's top level?

编辑: final.jar项目如下所示:

final.jar
    |_______BOOT-INF
              |_______lib
              |         |_______dep.jar (contains main class I want to invoke)
              |_______classes
                         |__________dir (directory I want to copy on demand with help of CLI)

我在这里找到了一个解决方案Spring Boot - How to specify an alternative start-class? (多个入口点) 启动 jar 时最终使用-Dloader.main属性。 命令行如下所示: java -jar -Dloader.main=<main_class>./final.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM