2017-09-25 39 views
1

只是想升級一些舊的東西和部分,我需要捆綁我使用Log4j的自定義罐子。我爲我的<javac>任務成功編譯添加了以下內容。爪哇螞蟻作業如何運送Log4j瓶與我的罐子

<path id="my.classpath"> 
    <fileset dir="${mainpath}"> 
     <include name="**/*log4j*.jar"/> 
    </fileset> 
</path> 

    <javac srcdir="src/java" destdir="build/filez/java" debug="on" deprecation="no" 
      includes="my/instruments/**/*, org/apache/log4j/**/*"> 
     <classpath refid="my.classpath"/> 
    </javac> 

然而,在我<jar>的工作,我看不到任何log4j依賴擠滿了我的自定義罐子。這可能是一個愚蠢的問題,但是如何確保我的定製jar在從另一個應用程序調用時不會失敗,因爲依賴項沒有打包?只要log4j已被類加載器加載到目標應用程序中,它會好嗎?

此外,我需要在我的Manifest中爲此添加一些內容嗎?

我不能使用Maven(是的,我知道)了一小會兒,所以不能與Maven

+0

如果你想在你的jar中包含一個文件,它由'jar'任務控制,而不是'javac'。是否需要在jar中包含log4j取決於它是運行時還是編譯時間依賴關係。 – CAustin

回答

1

解決這個問題,你可以使用One-JAR來包裝你的代碼連同它的依賴到一個大的可執行的JAR文件。

它既可以作爲命令行的獨立工具使用,也可以作爲build.xml中定義的任務使用。

<!-- Construct the One-JAR file --> 
<one-jar destfile="hello.jar" manifest="hello.mf"> 
    <main> 
     <!-- Construct main.jar from classes and source code --> 
     <fileset dir="${classes.dir}/src"/> 
    </main> 
    <lib> 
     <fileset file="${build.dir}/lib.jar" /> 
    </lib> 
</one-jar> 
+0

教育,教育,教育 - 我只能記住這些話!請提問!我需要向清單中添加任何內容嗎?我在這個one-jar裏添加了一個名爲my-MANIFEST.MF的清單 – ha9u63ar

+0

除了我認爲的主要類之外,沒有其他任何東西 – Raniz

+0

Hang on!這不是Ant的一部分 - 這是自定義的嗎? – ha9u63ar