Война пакетов между gradle загрузочного приложения Angular и Spring

#angular #spring-boot #rest #weblogic

#angular #весенняя загрузка #остальное #weblogic

Вопрос:

Я работаю над приложением Spring boot angular. Я создал метод Get rest на серверной части, а для внешнего интерфейса я использую angular для отображения результата.

Вот структура проекта.

Структура проекта

Я должен упаковать приложение как войну (spring boot angular). Мне удалось создать войну и развернуть ее на сервере Weblogic, но работает только метод REST Get, я не могу отобразить интерфейс.

Вот мой файл build.gradle:

 plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'war'
}

group = 'com.dannti'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
}

war {
  enabled=true
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-websocket'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

test {
useJUnitPlatform()
 }

 def webappDir = "$projectDir/src/main/webapp"

processResources {
dependsOn "buildAngular"
}

task buildAngular(type:Exec) {
// installAngular should be run prior to this task
dependsOn "installAngular"
workingDir "$webappDir"
inputs.dir "$webappDir"
// Add task to the standard build group
group = BasePlugin.BUILD_GROUP
// ng doesn't exist as a file in windows -> ng.cmd
if (System.getProperty("os.name").toUpperCase().contains("WINDOWS")){
    commandLine "ng.cmd", "build"
  } else {
    commandLine "ng", "build"
  }
}

task installAngular(type:Exec) {
 workingDir "$webappDir"
inputs.dir "$webappDir"
group = BasePlugin.BUILD_GROUP
if (System.getProperty("os.name").toUpperCase().contains("WINDOWS")){
    commandLine "npm.cmd", "install"
} else {
    commandLine "npm", "install"
}
}
  

Я думаю, что я должен добавить что-то в файл build.gradle, но я не знаю, как это сделать, и мне не удалось найти примеры

Редактировать:

Я добавил модификацию в файл, изменив каталог, в котором находится результат сборки angular, на «../ resources / static».

           "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "outputPath": "../resources/static",
        "index": "src/index.html",
        "main": "src/main.ts",
        "polyfills": "src/polyfills.ts",
        "tsConfig": "tsconfig.app.json",
  

Но теперь у меня ошибка, что js-файлы приложения angular не найдены.
Спасибо.

Комментарии:

1. Зачем упаковывать свое приложение в war, вы все равно можете упаковать его в jar и добавить содержимое angular в resources/static папку.

2. Не могли бы вы помочь, как изменить файл build.gradle, чтобы скопировать содержимое в папку resources / static. Мне нужна война, чтобы развернуть ее на сервере Weblogic.

3. Я не пользователь gradle, но это должно быть тривиально, вы можете найти много примеров по этой теме.

4. Я нашел больше примеров с использованием maven, а не gradle. У меня есть редактирование вопроса. Спасибо