我有一个客户项目的属性文件。我想将客户端导出为可运行的 jar,但不应将属性文件集成到此 jar 中。因为我当然想对其进行编辑,而不必重新编译 jar 客户端文件。
如何使用 eclipse 以这种方式导出它?
我目前没有使用 Java,但我曾经使用 Eclipse 导出可运行的 JAR。我使用属性来存储设置,文件是在 Jar-File 的周围文件夹中自动生成的。我不知道这是否对您有帮助,但这可能是一个起点......
使用标准 Eclipse 的导出作为可运行 JAR 似乎不可能做到这一点(右键单击项目 -> 导出 -> 可运行 JAR 文件 -> 另存为 ANT 脚本)。但是,Eclipse 允许您将导出的定义存储为 Ant 文件,以后可以对其进行修改。
修改如下所示(我用注释标记了修改的部分;它应该很容易与您的 Eclipse 生成的脚本进行比较)。
<target name="create_run_jar">
<jar destfile="/mytargetlib/myjar.jar">
<manifest>
<attribute name="Main-Class" value="Main"/>
<!-- Here we only add lib/properties, the rest should be pre-generated by Eclipse -->
<attribute name="Class-Path" value=". lib/myjar1.jar lib/myjar2.jar lib/properties"/>
</manifest>
<fileset dir="/bin" excludes="**/*.properties" />
</jar>
<delete dir="/mytargetdir/lib"/>
<mkdir dir="/mytargetdir/lib"/>
<copy file="myjar.jar" todir="/mytargetdir/lib"/>
<copy file="/myprojectdir/lib/myjar1.jar" todir="/mytargetdir/lib"/>
<copy file="/myprojectdir/lib/myjar2.jar" todir="/mytargetdir/lib"/>
<!-- Again, all the above was generated by Eclipse. We only add a copy of our property file -->
<mkdir dir="/mytargetdir/lib/properties"/>
<copy file="/myprojectdir/properties/mypropertyfile.properties" todir="/mytargetdir/lib/properties"/>
<!-- end of our addition -->
</target>
您必须将它们放在项目工作区中,使其位于 jar 中(但不是这种情况,因为您不希望这样做)或从预定义的目录加载它们,例如,您可以要求属性文件始终位于与可运行的 jar 文件相同的目录。
顺便说一句,如果将属性文件放在 jar 中,则不必重新编译项目。jar 文件只是一个包,您可以将其解包,对属性文件进行编辑,然后再次打包。它会按照您的要求工作。
如果你改变主意,请看这篇文章。
如果您希望属性文件与 JAR 文件位于同一目录中,只需在 Ant 构建中添加一个额外步骤以压缩属性文件和 JAR 文件。
如果没有,让您的 Java 代码在第一次运行 Java 应用程序时在您想要的位置创建属性文件。