2016-01-08 5 views
11

Возможно ли это? Например, myOpenGL - это пакет, а openGL - приложение.ExtJS - создание пакета путем расширения классов в приложении

Я хотел бы сделать что-то вроде этого:

Ext.define('myOpenGL.view.Qxga',{ 
    extend: 'openGL.view.Uxga', 
    alias: 'widget.qxga', 
    itemId: 'qxga', 
    requires: [ 
      'openGL.view.Uxga', 
      'myOpenGL.view.QxgaController' 
    ], 
    controller: 'QxgaController' 
}); 

Это как организованы файлы (большинство файлов, исключенных для ясности):

workspace/ 
    packages/ 
     myOpenGL/ 
      .sencha/ 
      src/ 
       view/ 
        qxga.js <--- the file defining QXGA 
      package.json 
      build.xml 
    openGL/ 
     .sencha/ 
      app/   <--- errors are being generated from here?    
     app/ 
      view/ 
       uxga.js <--- the file with the class I want to extend 
     app.json 
     build.xml 
     ... 

Сейчас я получаю ошибки неразрешенных зависимостей , но они, похоже, генерируют приложение, а не пакет (см. сразу после The following error...):

[ERR] Failed to resolve dependency openGL.view.Uxga for file myOpenGL.view.Qxga 
[ERR] 
[ERR] BUILD FAILED 
[ERR] com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga 
[ERR] 
[ERR] Total time: 6 seconds 
[ERR] The following error occurred while executing this line: 
C:\Users\«username»\Applications\Sencha\Cmd\5.1.0.26\plugins\ext\current\plugin.xml:403: The following error occurred while executing this line: 
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\build-impl.xml:378: The following error occurred while executing this line: 
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\init-impl.xml:303: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga 

Некоторые вопросы:

  • Почему возникают ошибки от workspace\openGL\.sencha\app? Это packages\myOpenGL Я пытаюсь построить. Я ожидал бы init-impl.xml от packages, чтобы испускать ошибки.
  • Я не могу изменить openGL/app, должен использовать как есть, но может изменить что-либо в packages. Также я не могу переместить openGL, но мог бы создать ярлык к нему в packages или создать переопределения в openGL/overrides. Зная, что я могу заставить это работать?

ответ

2

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

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

Другое решение - заставить провайдера приложений реорганизовать нужные функции в виде пакетов! То есть, повторно использовать то, что должно быть повторно использовано.

В любом случае, это очень много работы, но плохая конструкция всегда возвращается, чтобы укусить вас!

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

  • Нет связанных вопросов^_^