如何在持续集成服务器中使用FatJar(Eclipse之外)?

根据我的理解,FatJar是一个基于OSGi框架的Eclipse插件。我相信这使得在OSGi平台之外使用变得困难。另外,看看反编译的FatJar,它似乎需要大量的OSGi和Eclipse类,例如
org.eclipse.jdt.core.IJavaProject
org.osgi.framework.BundleContext
。 所以,在这一切之前,我想知道是否有任何方法可以使用我们珍贵的* .fatjar文件与Hudson(使用脚本或其他)。 欢迎任何好的建议! 谢谢!     
已邀请:
经过更多的工作和研究,似乎即使FatJar主要是Eclipse插件,也可以在连续集成服务器中轻松集成它。 在我的例子中,使用Ant,我发现可以使用以下代码(最初来自此站点)在Eclipse之外运行FatJar插件。
<project name="FatJar MySuperDuperClass.jar (experimental)" default="main" basedir=".">
    <!-- this file was created by Fat-Jar Eclipse Plug-in -->
    <!-- the ANT-Export is in a very early stage, so this -->
    <!-- is only experimental, ANT 1.6 or above is        -->
    <!-- required, feedback is always welcome:            -->
    <!--       http://sourceforge.net/projects/fjep       -->
    <!-- uncomment the following lines if using ANT outside Eclipse -->
    <!--
        <property name="fjepPath" value="plugins/net.sf.fjep.fatjar_0.0.31/fatjar.jar"/>
        <taskdef name="fatjar.build" classname="net.sf.fjep.anttask.FJBuildTask" classpath="${fjepPath}"/>
        <typedef name="fatjar.manifest" classname="net.sf.fjep.anttask.FJManifestType" classpath="${fjepPath}"/>
        <typedef name="fatjar.exclude" classname="net.sf.fjep.anttask.FJExcludeType" classpath="${fjepPath}"/>
        <typedef name="fatjar.jarsource" classname="net.sf.fjep.anttask.FJJarSourceType" classpath="${fjepPath}"/>
        <typedef name="fatjar.filesource" classname="net.sf.fjep.anttask.FJFileSourceType" classpath="${fjepPath}"/>
    -->
    <!-- uncomment the above lines to use ANT outside of Eclipse -->
    <target name="main">
      <fatjar.build output="MySuperDuperClass.jar">
        <fatjar.manifest mainclass="de.schwobeseggl.test.MySuperDuperClass"/>
        <fatjar.filesource path="bin" relpath=""/>
        <fatjar.jarsource file="lib/commons-cli.jar" relpath=""/>
        <fatjar.jarsource file="lib/jbossall-client.jar" relpath=""/>
        <fatjar.jarsource file="lib/junit.jar" relpath=""/>
        <fatjar.jarsource file="lib/log4j.jar" relpath=""/>
        <fatjar.jarsource file="lib/jdom.jar" relpath=""/>
       </fatjar.build>
    </target>
</project>
我在开始时取消了6行的块,它运行良好。阅读顶部的评论,似乎这是使用FatJar本身导出,但不知道如何做到这一点。我刚把这个样本调整到我的用例。     
FatJar是一个Eclipse插件,提供一个jar功能。在Eclipse之外,你只需要直接使用one-jar。 http://one-jar.sourceforge.net/ 注意,Eclipse复杂化过程不容易编写脚本。我已经使用ant4eclipse在Ant中完成了它,我建议反对它。编辑:从2015年开始,你应该研究Maven项目而不是普通的Eclipse。     
我的建议是寻找与你的构建工具一起使用的FatJar替代品。 如果您使用的是Maven,请查看shade插件。 对于Ant,您可以使用适当的unjaring,复制和jaring任务顺序完成工作。     
是的,它可以在日食之外使用它。尝试类似于以下配置:
<property name="java.source" value="1.7" />
<property name="java.target" value="1.7" />
<property name="src.dir" location="src" />
<property name="libraries.dir" location="lib" />
<property name="dist.dir" location="out" />
<property name="build.classes.dir" location="${dist.dir}classes" />
<property name="dist.jar" value="MyJAR.jar" />
<property name="fjepPath" value="${libraries.dir}fatjar.jar" />

...

<typedef name="fatjar.manifest" classname="net.sf.fjep.anttask.FJManifestType" 
         classpath="${fjepPath}" loaderref="${fjepPath}" />
<typedef name="fatjar.exclude" classname="net.sf.fjep.anttask.FJExcludeType" 
         classpath="${fjepPath}" loaderref="${fjepPath}" />
<typedef name="fatjar.jarsource" classname="net.sf.fjep.anttask.FJJarSourceType" 
         classpath="${fjepPath}" loaderref="${fjepPath}" />
<typedef name="fatjar.filesource" classname="net.sf.fjep.anttask.FJFileSourceType" 
         classpath="${fjepPath}" loaderref="${fjepPath}" />
<taskdef name="fatjar.build" classname="net.sf.fjep.anttask.FJBuildTask" 
         classpath="${fjepPath}" loaderref="${fjepPath}" />

...

<target name="buildJar">
    <echo>Building JAR</echo>
    <fatjar.build output="${dist.dir}${dist.jar}">
        <fatjar.manifest mergemanifests="false" mainclass="com.company.app.Main" />
        <fatjar.filesource path="${build.classes.dir}" />
        <fatjar.jarsource file="${libraries.dir}log4j-1.2.17.jar" />
        <fatjar.jarsource file="${libraries.dir}commons-httpclient-2.0.jar" />
        ...
    </fatjar.build>
</target>
    

要回复问题请先登录注册