将 Repast 模型打包为 jar 文件而不包含源代码?
Packaging a Repast model as a jar file without including the source code?
我想创建模型 jar 文件但不包括源代码。可能吗? Repast 模型安装程序默认包含源代码,但我想对模型的接收者隐藏它。
是的,这是可能的,但有一个重要的警告。编译后的 Java 代码作为二进制文件分发,如 jar,可以非常准确地反编译回原始源代码。如果您的目标是保护专有源代码,则需要进行代码混淆——有关详细信息,请参阅 https://www.excelsior-usa.com/articles/java-obfuscators.html。不幸的是,代码混淆是一个相当复杂的主题。
有两种方法可以从 Repast 模型安装程序中省略项目源代码:
方法 1 – 从模型安装程序配置文件中删除 /src 元素。这将指示模型安装程序省略安装程序 jar 中的 /src 文件。编译好的代理类会在通常的项目/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 文件夹和 select Export… -> Java -> JAR 文件。在导出对话框中,确保在“Select要导出的资源”框中选中 src 文件夹,然后指定 JAR 文件名和位置。将 jar 文件导出到项目 /lib 文件夹中的最佳位置。大多数其他选项应保留为默认值。确保未选中“导出 Java 源文件和资源”,否则会将源复制到 jar 文件中。在生成 JAR 文件并确认它存在于 /lib 文件夹中之后,然后删除 /src 文件夹的内容而不是 /src 文件夹本身。这将永久删除模型源代码,因此如果您采用这种方式,请再次复制该项目。简单地重命名或删除/src 文件夹会导致安装程序失败,因此此方法需要删除。最后,需要更新 .rs 文件夹中的 user_path.xml 文件以反映源代码位置的变化。将该行更改为假设导出的模型 JAR 文件位于 /lib 文件夹中。所有模型代码现在都在您的 project/lib 文件夹中的单个 JAR 文件中。此时 /src 和 /bin 文件夹应该是空的。像往常一样构建模型安装程序。安装源代码的选项仍会出现在安装程序中,但安装程序 JAR 中不包含任何源代码,因此安装时不会复制任何源代码。
我想创建模型 jar 文件但不包括源代码。可能吗? Repast 模型安装程序默认包含源代码,但我想对模型的接收者隐藏它。
是的,这是可能的,但有一个重要的警告。编译后的 Java 代码作为二进制文件分发,如 jar,可以非常准确地反编译回原始源代码。如果您的目标是保护专有源代码,则需要进行代码混淆——有关详细信息,请参阅 https://www.excelsior-usa.com/articles/java-obfuscators.html。不幸的是,代码混淆是一个相当复杂的主题。
有两种方法可以从 Repast 模型安装程序中省略项目源代码:
方法 1 – 从模型安装程序配置文件中删除 /src 元素。这将指示模型安装程序省略安装程序 jar 中的 /src 文件。编译好的代理类会在通常的项目/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 文件夹和 select Export… -> Java -> JAR 文件。在导出对话框中,确保在“Select要导出的资源”框中选中 src 文件夹,然后指定 JAR 文件名和位置。将 jar 文件导出到项目 /lib 文件夹中的最佳位置。大多数其他选项应保留为默认值。确保未选中“导出 Java 源文件和资源”,否则会将源复制到 jar 文件中。在生成 JAR 文件并确认它存在于 /lib 文件夹中之后,然后删除 /src 文件夹的内容而不是 /src 文件夹本身。这将永久删除模型源代码,因此如果您采用这种方式,请再次复制该项目。简单地重命名或删除/src 文件夹会导致安装程序失败,因此此方法需要删除。最后,需要更新 .rs 文件夹中的 user_path.xml 文件以反映源代码位置的变化。将该行更改为假设导出的模型 JAR 文件位于 /lib 文件夹中。所有模型代码现在都在您的 project/lib 文件夹中的单个 JAR 文件中。此时 /src 和 /bin 文件夹应该是空的。像往常一样构建模型安装程序。安装源代码的选项仍会出现在安装程序中,但安装程序 JAR 中不包含任何源代码,因此安装时不会复制任何源代码。