2012-02-22 72 views
3

我試圖將我的Google AppEngine項目的庫項目用作構建路徑上的項目。與AppEngine一起使用工作區項目

有沒有辦法讓它包含在AppEngine項目中,而無需複製整個源代碼或製作一個jar包?

我只使用庫的一小部分,所以它似乎是矯枉過正的複製整個jar和大量的工作,以找到源內的依賴關係,只獲得我使用的部分。

+1

似乎很奇怪,谷歌到目前爲止還沒有解決這個問題。 – 2014-01-31 23:03:37

+0

還有其他動機想要這個。示例:開發一個GAE項目使用的庫。你不想爲你測試的每一個小變化創建一個jar。引用GAE項目中的庫項目也可以解決這種情況。 – 2014-03-05 10:07:21

回答

3

你不會喜歡這個答案,但

號爲包括圖書館作爲該項目的依賴性,一旦部署所需的庫必須在WEB-INF/lib目錄作爲一個罐子被發現。這將要求你根據你要使用的庫創建一個jar文件。另一種選擇是按照你所說的將相關源代碼放入你的項目並從那裏使用它。

在開發過程中,你可以通過執行以下操作使圖書館項目中的應用程序引擎項目的依賴性:

Under Project->Properties->Java Build Path->Projects Tab 
select the "Add.." button to add a subproject to your build. 

注意:這不會解決在生產環境中運行。

+0

是的......就像我想的那樣...但是我喜歡這個答案就好了:-) – 2012-02-23 02:07:16

+1

這在開發環境中不起作用:( – 2014-01-31 23:02:18

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

我花了一點才弄清楚如何做到這一點(http: //help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FgettingStarted%2Fqs-93_project_builder.htm),但它工作得很好,我把它作爲Common的一部分源代碼,並從那裏複製到依賴項目中,因爲它似乎以這種方式運行的頻率較低 - 只有在觸及Common且不是每次構建派生項目時。 – 2013-11-26 00:24:29

0

我設法做到這一點,通過創建庫文件項目是一個「Web片段項目」,並將其添加到應用程序引擎項目的項目屬性中的「部署大會」。

但是,應用程序引擎項目似乎不適用於非平凡的依賴關係結構。就我而言,我在EAR中有兩個應用程序引擎模塊,兩者都取決於libary項目。但是,Google插件僅將庫項目與其中一個模塊捆綁在一起,即使配置相同,也不能同時使用這兩個模塊。顯然是一個錯誤。

我的解決方法是將鏈接的源文件夾添加到應用程序引擎項目中,指向庫項目的源文件夾。醜陋,但它做到了這一點。

相關問題