将Repast模型打包为jar文件而不包含源代码?

时间:2017-08-24 21:17:19

标签: repast-simphony

我想创建一个模型jar文件但不包含源代码。可能吗? Repast模型安装程序默认包含源代码,但我想将其隐藏在模型的收件人中。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,但有一个重要的警告。作为二进制文件(如jar)分发的编译Java代码可以非常精确地简单地反编译回原始源代码。如果您的目标是保护专有源代码,则需要进行代码混淆 - 有关详细信息,请参阅https://www.excelsior-usa.com/articles/java-obfuscators.html。遗憾的是,代码混淆是一个相当复杂的主题。

有两种方法可以从Repast模型安装程序中省略项目源代码:

方法1 - 从模型安装程序配置文件中删除/ src元素。这将指示模型安装程序在安装程序jar中省略/ src文件。已编译的代理程序类将位于通常的project / bin文件夹中。

在/installer/installation_compnents.xml文件中,第156行附近评论以下内容:

<!-- 
       <pack name="Sources" required="no">
             <description>The model source code</description>
             <file src="$StagingOptionalArea/src" targetdir="$INSTALL_PATH/Geography"/>
       </pack>
-->

“”表示被注释的代码块的开头和结尾。接下来,在/installer/installation_coordinator.xml文件中,围绕第62行注释:

<!-- Copy optional files to a separate directory -->
       <copy todir="${StagingOptionalArea}" overwrite="true" failonerror="false">
              <fileset dir="." casesensitive="no">
<!--                 <include name="**/src/**" /> -->              
                     <include name="**/docs/**" />
              </fileset>
       </copy>

在这里,您只想注释复制/ src文件夹而不是/ docs文件夹的单行(尽管您可以,如果您愿意)。现在只需像往常一样构建模型安装程序。

方法2 - 将/ src文件夹导出到jar文件。与第一种方法一样,此方法不需要对默认安装程序文件进行任何更改。但是,它需要在将源代码导出到JAR文件后删除它,这意味着您需要处理项目的副本以保留源代码。要将模型代码导出到JAR文件,请右键单击/ src文件夹并选择Export ... - &gt; Java - &gt; JAR文件。在导出对话框中,确保在“选择要导出的资源”框中选中src文件夹,然后指定JAR文件名和位置。在project / lib文件夹中导出jar文件的最佳位置。大多数其他选项应保留为默认值。确保未选中“导出Java源文件和资源”,否则它会将源复制到jar文件中。生成JAR文件并验证它是否存在于/ lib文件夹中后,删除/ src文件夹的内容,但不删除/ src文件夹本身的内容。这将永久删除模型源代码,因此如果您采用此路线,请再次处理项目的副本。只需重命名或删除/ src文件夹将导致安装程序失败,因此此方法需要删除。最后,需要更新.rs文件夹中的user_path.xml文件以反映源代码位置的更改。将行更改为假定导出的模型JAR文件位于/ lib文件夹中。所有模型代码现在都在project / lib文件夹中的单个JAR文件中。此时/ src和/ bin文件夹应为空。像往常一样构建模型安装程序。安装源代码的选项仍将显示在安装程序中,但安装程序JAR中不包含任何源,因此安装时不会复制源代码。