我正在尝试将一个库项目与我的 Google AppEngine 项目一起用作构建路径上的项目。
有没有办法将其包含在 AppEngine 项目中,而无需复制整个源代码或制作 jar ?
我只使用了库的一小部分,因此复制整个 jar 似乎有点过头了,并且需要做很多工作才能在源代码中找到依赖项以仅获取我正在使用的部分。
我正在尝试将一个库项目与我的 Google AppEngine 项目一起用作构建路径上的项目。
有没有办法将其包含在 AppEngine 项目中,而无需复制整个源代码或制作 jar ?
我只使用了库的一小部分,因此复制整个 jar 似乎有点过头了,并且需要做很多工作才能在源代码中找到依赖项以仅获取我正在使用的部分。
我添加了一个 ant 项目构建器,它从依赖项目中复制类文件。ant 文件位于 gae 项目中,并从引用的项目中复制类文件。这是蚂蚁:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonsCopy" default="copy" basedir=".">
<target name="copy">
<copy todir="war/WEB-INF/classes">
<fileset dir="../Commons/bin" includes="**/*.class">
</fileset>
</copy>
</target>
</project>
我将其命名为“CommonsCopyBuilder.xml”,因为它从公共项目中复制代码。
这将在运行项目之前将文件复制到适当的位置。
你不会喜欢这个答案,但不会。
为了在部署后将该库作为依赖项包含在项目中,必须在您的WEB-INF/lib
目录中以 jar 的形式找到所需的库。这将要求您根据要使用的库创建一个 jar。另一种选择是按照您所说的将依赖源拉入您的项目并从那里使用它。
在开发期间,您可以通过执行以下操作使库项目成为您的应用引擎项目的依赖项:
Under Project->Properties->Java Build Path->Projects Tab
select the "Add.." button to add a subproject to your build.
注意:这不会解决在生产环境中的运行问题。
我设法通过创建 libary 项目是一个“Web 片段项目”并将其添加到应用程序引擎项目的项目属性中的“部署程序集”来做到这一点。
但是,应用引擎项目似乎不适用于非平凡的依赖结构。就我而言,我在一个 EAR 中有两个应用程序引擎模块,这两个模块都取决于库项目。但是,Google 插件仅将库项目与其中一个模块捆绑在一起,尽管配置相同,但从未同时与这两个模块捆绑在一起。显然是一个错误。
我的解决方法是将链接源文件夹添加到应用程序引擎项目,指向库项目的源文件夹。丑陋,但它的工作。