2009-09-07 64 views
4

我已經開始編寫一個項目,該項目目前從Eclipse項目中生成一個單一的JAR文件。基本上,有一個Ant腳本可以在Eclipse Java Builder運行的任何時候運行,並將Eclipse Java Builder(.class文件)的輸出和包裝到JAR文件中。然後將該JAR文件放在公用目錄中,以便其他工具可以抓取它以獲取最新版本。從Eclipse項目創建多個JAR文件

這對團隊非常有用,所以我不想對它進行太多的改變,但是在該JAR中有很多不必要的文件使它比需要的大得多。我想知道是否可以在上面描述的同樣的框架(Eclipse + Ant)中將大型JAR文件拆分爲更小,更易於管理的JAR文件。例如:

com.company.project.thing1 com.company.project.thing2 com.company.project.thing3

所有三樣東西都打包成JAR。相反,我只需要將thing1和thing2放在一個JAR文件中,而thing3放在第二個JAR文件中。

我意識到我可以分開項目,但我想看看是否有可能將項目組合在一起仍然是合理的。任何幫助將非常感激。

謝謝。

每請求時,Ant構建腳本(我只包括jar任務 - 對方只是一個乾淨的):

<target name="jar" description="Deploys the JAR file." depends="clean"> 
    <mkdir dir="${dir.dist}"> 

    <!-- Build the JAR file containing the classes. --> 
    <jar destfile="${dir.dist}/${build.name}.jar"> 

     <!-- Generate the MANIFEST.MF file. --> 
     <manifest> 
      <attribute name="Built-By" value="${user.name}" /> 
      <attribute name="Release-Version" value=${version}" /> 
     </manifest> 

     <zipfileset dir="${dir.build}" /> 
    </jar> 
</target> 

回答

3

讀,如果你使用zipfileset(和一些macrodef魔法)的includes設施,你最終可能會以類似如下:

<macrodef name="packaging"> 
    <attribute name="package"/> 
    <sequential> 
     <jar destfile="${dir.dist}/${build.name}[email protected]{package}.jar"> 
      <manifest> 
       <attribute name="Built-By" value="${user.name}"/> 
       <attribute name="Release-Version" value=${version}"/> 
      </manifest> 

      <zipfileset dir="${dir.build}" includes="com/acme/@{package}/**/> 
     </jar> 
    </sequential> 
</macrodef> 

<packaging package="package1"/> 
<packaging package="package2"/> 
<packaging package="package3"/> 
+1

這是完美的,謝謝!我不知道macrodef - 謝謝你給我看(+1)。 – JasCav 2009-09-07 20:49:30

0

可以粘貼build.xml文件(由所使用的內容螞蟻)?

這是非常簡單的,你必須做的,但向我們展示構建文件,所以我們可以幫助你。

OR ..自己上Ant jar task

+0

我加它。我理解JAR任務,但我不確定如何在知道如何抽出Eclipse構建的特定部分的情況下使用它。這就是給我一些困難。 – JasCav 2009-09-07 19:20:42