2012-02-22 2 views
3

Я пытаюсь использовать проект библиотеки с моим проектом Google AppEngine как проект по пути сборки.Использование проектов рабочей области с AppEngine

Есть ли способ получить это, включенное в проект AppEngine, без необходимости копировать весь источник или сделать банку?

Я использую только небольшую часть библиотеки, поэтому кажется, что излишний экземпляр копирует всю банку и много работы, чтобы найти зависимости внутри источника, чтобы получить только те части, которые я использую.

+1

Кажется странным, что Google до сих пор не рассматривал эту проблему. –

+0

Существуют другие мотивы для этого. Пример. Разработка библиотеки, которая будет использоваться проектом GAE. Вы не хотите создавать банку при каждом небольшом изменении, которое вы тестируете. Реферирование проекта библиотеки из проекта GAE также решило бы этот сценарий. –

ответ

3

Вы не собираетесь нравится этот ответ, но No.

Для того, чтобы включить библиотеку в качестве зависимости в проекте после развертывания требуемая библиотека должна быть найдена в вашем WEB-INF/lib каталоге, баночку. Это потребует от вас создать банку на основе библиотеки, которую вы хотите использовать. Другой вариант - делать так, как вы сказали, вытащить зависимый источник в ваш проект и использовать его оттуда.

В процессе разработки вы можете сделать библиотеку проекта в зависимости от вашего проекта двигателя приложения, выполнив следующие действия:

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

Примечания: Это не вскрывающее бегущее в производственной среде.

+0

Да ... как я и думал ... но мне все равно нравится ответ :-) –

+1

Это не работает в среде разработки :( –

4

Я добавил создателя муравья, который копирует файлы классов из зависимого проекта. Файл 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 был затронут, и не каждый раз, когда был создан производный проект. –

0

Мне удалось это сделать, создав проект библиотеки - «Проект веб-фрагментов» и добавив его в «Сборка развертывания» в свойствах проекта проекта приложения.

Однако проект движка приложения, похоже, не работает с нетривиальными структурами зависимостей. В моем случае у меня было два модуля движка приложения в EAR, как в зависимости от проекта libary. Тем не менее, плагин Google только связал проект библиотеки с одним из модулей, никогда с обоими одновременно, несмотря на идентичные конфигурации. Очевидно, ошибка.

Моей совместной работой было добавление связанной исходной папки в проекты движка приложения, указывающие на исходную папку проекта библиотеки. Уродливый, но он выполняет эту работу.

Смежные вопросы