我正在尝试使用我的Google AppEngine项目的库项目作为构建路径上的项目。
有没有办法让它包含在AppEngine项目中而不必复制整个源代码或制作一个jar?
我只使用了库的一小部分,因此复制整个jar并进行大量工作以查找源代码中的依赖项以获取我正在使用的部分似乎有点过分。
答案 0 :(得分:4)
我添加了一个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',因为它从公共项目中复制代码。
这会在运行项目之前将文件复制到适当的位置。
答案 1 :(得分:3)
你不会喜欢这个答案,但不是。
为了在部署后将库作为依赖项包含在项目中,必须在jar WEB-INF/lib
目录中找到所需的库。这将要求您根据要使用的库创建jar。另一种选择是像你所说的那样将依赖源拉入你的项目并从那里使用它。
在开发过程中,您可以通过执行以下操作使库项目成为应用引擎项目的依赖项:
Under Project->Properties->Java Build Path->Projects Tab
select the "Add.." button to add a subproject to your build.
注意:这不会解决在生产环境中运行的问题。
答案 2 :(得分:0)
我设法通过创建libary项目来实现这一目标是一个&#34; Web Fragment Project&#34;并将其添加到&#34;部署组件&#34;在app引擎项目的项目属性中。
然而,app引擎项目似乎不适用于非平凡的依赖结构。就我而言,我在EAR中有两个app引擎模块,两者都取决于libary项目。但是,Google插件仅将库项目与其中一个模块捆绑在一起,尽管配置相同,但它们不会同时捆绑两个模块。显然是一个错误。
我的解决方法是将一个链接的源文件夹添加到app引擎项目,指向库项目的源文件夹。丑陋,但它确实起作用。