Как встроить Angular CLI сгенерированный проект в качестве подпроекта в проект Gradle, используя de.clashsoft. angular -gradle? - PullRequest
0 голосов
/ 03 мая 2020

С единственной целью - обучить себя Грэдлу и Angular (да, оба одновременно, глупый я!). Я пытаюсь решить проблему сборки Grade.

Макет проекта выглядит примерно так:

├── applications
│   ├── build
│   ├── build.gradle
│   ├── cppapplication
│   │   ├── build
│   │   ├── build.gradle
│   │   └── src
│   ├── cppcomponent
│   │   ├── build
│   │   ├── build.gradle
│   │   └── src
│   ├── frontend
│   │   ├── README.md
│   │   ├── angular.json
│   │   ├── browserslist
│   │   ├── build
│   │   ├── build.gradle
│   │   ├── dist
│   │   ├── e2e
│   │   ├── karma.conf.js
│   │   ├── node_modules
│   │   ├── package-lock.json
│   │   ├── package.json
│   │   ├── src
│   │   |   ├── app
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.json
│   │   ├── tsconfig.spec.json
│   │   └── tslint.json
│   └── src
│       ├── main
│       └── test
├── build.gradle
├── settings.gradle

Я использую Gradle 6.0.1 и использовал gradle init для создания верхний уровень. Соответствующей частью в settings.gradle является включение include 'applications' include 'applications:frontend'

и в apps / build.gradle.

plugins {
    // There is an Angular app in ./frontend
    id 'de.clashsoft.angular-gradle' version '0.1.6' apply false

}

subprojects {
    if (name.startsWith('frontend')) {
        apply plugin: 'de.clashsoft.angular-gradle'
    }
}

В каталоге frontend я сгенерировал рабочий Angular CLI 9.1.0 Это приложение работает нормально с использованием ng напрямую. И я использую Gradle, чтобы построить его из applications/frontend/

cat build.gradle 
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds
 */
plugins {
   id 'de.clashsoft.angular-gradle'
}

angular {
   // FIXME: there is an issue within a multi-project, as 'src/app' is expected in some cases
   //  and the full nested path in other cases.
   appDir = 'src/app' // root directory of your Angular app
}

Или, по крайней мере, похоже, что он

../../gradlew build

Task :applications:frontend:installAngularDependencies
npm install
npm WARN codelyzer@5.2.1 requires a peer of tslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules/webpack-dev-server/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules/watchpack/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

audited 14586 packages in 4.197s

45 packages are looking for funding
  run `npm fund` for details

found 2 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 5s

Теперь моя цель - контролировать построение всего дерева из верхний каталог. Но при этом я получаю: Невозможно запустить программу "ng" (в каталоге src / app), такого каталога файлов нет.

Вопрос 1:

Могу ли я изменить appDir в build.gradle на канонический путь, который всегда будет решать в нужном месте? Может быть, использовать какое-либо свойство Gradle?

Вопрос 2:

Есть ли другой "наилучший метод" встраивания Angular проектов в полиглот (Java, Python, C ++, серверные части и мягкие компоненты) мультипроектная структура Gradle?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...