簡體   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