我正在使用ant构建我的web应用程序。我正在尝试从源文件夹将属性文件包含在WEB-INF文件夹中。我已经将它包含在war/WEB-APP/classes文件夹中。但是应用程序没有读取它。因此,我想将它直接包含在WEB-INF文件夹中,以便在应用程序中读取它。我试过以下几种,但似乎都不起作用。我的build.xml看起来像这样:
<target name="build-dev" description="Package GWT app to web archive and deploy to web server">
<echo message="Package GWT app to web archive" />
<copy toDir="${basedir}/war/WEB-INF/lib">
<fileset dir="${basedir}/lib" includes="*.jar" />
<fileset dir="${gwt.home}" includes="*.jar" />
</copy>
<copy todir="${basedir}/war" file="${basedir}/src/etc/dev/GroupQuoteUI.properties" />
<war basedir="${war.dir}" destfile="${deploy.dir}/${app.name}.war" webxml="${webinf.dir}/web.xml">
<webinf dir="${webinf.dir}/">
<include name="*." />
<exclude name="**/web.xml" />
</webinf>
<classes dir="${basedir}/src/etc/dev/" includes="*.properties" />
</war>
</target>
我试过使用:
在"webinf"标记中包含name="${war.dir}/GroupQuoteUI.properties",但它不起作用。
标记中还包括="${war.dir}/GroupQuoteUI.properties"。
还有这个内部的"webinf"文件夹再次:
"zipfileset dir="${basedir}/war/"includes="GroupQuoteUI.properties"fullpath="${webinf.dir}/GroupQuoteUI.properties"
但这在构建过程中给出了一个错误,说明"不能将src-dir放在一起"。
那么我该怎么做才能将这个文件包含在war的WEB-INF目录中呢。包括所有其他目录和web.xml文件。
您无法通过访问打包到war或jar中的文件
new FileInputStream()
相反,您可以执行以下操作:
this.getClass().getResourceAsStream(filename)
这将从类路径加载一个资源(您的属性文件),因此它将读取war档案中的文件。它通过使用相同的ClasseLoader来实现这一点,该ClasseLLoader已用于加载属于this.getClass()的类
在这里你可以找到一个例子:如何在Java 中真正从类路径读取文本文件