簡體   English   中英

Java,創建僅包含依賴項的可運行jar文件。

[英]Java, create runnable jar file including ONLY used dependencies.

之前已經有人問過這個問題,但是還沒有令人滿意的答案!

我在一個充滿其他無關類的項目中有一個Java Main.java類。 我想將Main.java導出到可執行的jar文件中,該文件僅包含它實際使用的依賴項。

如果可能的話,這可能嗎?

Eclipse(創建可運行的jar)和Intellij(創建工件)都將包含在包含Main.java類的模塊中定義的所有依賴項。

您實際上應該使用的是依賴性管理系統,而不是Eclipse和IDEA中默認提供的系統。 許多Java開發人員(包括我在內)都使用Maven 如果您使用的是Eclipse,則其中包含m2eclipse

您不希望將所有依賴項放在一個項目中,因為它可能會變得腫。 但是,如果您有一個使用<dependencyManagement>標記的Maven父pom ,則可以輕松引用該父pom ,然后輕松引用該子項目中所需的依賴項。 這將所有分離的東西實際上是分開的,並提供了一種簡單的組織機制-人們使用Maven的原因。

如何在Maven中使用<dependencyManagement>

Maven還具有可為您管理jar創建maven-assembly-plugin ,例如maven-assembly-plugin ,可讓您按照自己想要的方式在jar中構造依賴項,依此類推。


您必須自己以某種方式執行此操作。 您期望任何IDE /依賴項管理系統如何使用以下代碼:

Test.java

public class Test {
     public static void main(String... args) {
         System.exit(0);
         new Foo(null);
     }
}

Foo.java

import com.google.common.base.Preconditions;

public class Foo {
    public Foo(String s) {
        Preconditions.checkNotNull(s);
    }
}

這里不需要Guava依賴項...但是您僅在RUNTIME中知道這一點。 如果您包括所有類的所有import語句,那么您將包括所有依賴項。 如果不這樣做,則需要進行運行時分析。 您的問題類似於圖靈停止問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM