С единственной целью - обучить себя Грэдлу и 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?
Спасибо.