Развернуть угловой 5 Springboot многомодульный проект -jar - PullRequest
0 голосов
/ 20 мая 2018

Я создал проект mutimodule для Springboot с помощью tutorial двух модулей - один бэкэнд (классы java), другой forntend (приложение angular 5) Я включил зависимость модуля внешнего интерфейса в модуль Backend.Я создаю банку, используя плагин ресурсов Maven.Я копирую статические ресурсы в статическую папку директории сборки в моем файле pom.xml.У меня также есть @Controller, который возвращает «индекс».Когда я запускаю jar, я ожидаю увидеть index.html (внешнего модуля) для рендеринга на localhost: 8080.Но я получаю Внутреннюю ошибку сервера, говорящую: «Средство распознавания шаблонов не может найти индекс. Я знаю, что @Contoller отображает HTML из папки шаблонов, но в моем случае я хочу, чтобы он отображался из модуля внешнего интерфейса.

Вот мойpom.xml для модуля внешнего интерфейса -

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${build.directory}/classes/static</outputDirectory>
                        <resources>
                            <resource>
                                <directory>target/frontend</directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>1.6</version>

            <configuration>
                <nodeVersion>v8.10.0</nodeVersion>
                <npmVersion>5.6.0</npmVersion>
                <workingDirectory>src/main/frontend</workingDirectory>
            </configuration>

            <executions>
                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                </execution>

                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                </execution>

                <execution>
                    <id>npm run build</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>

                    <configuration>
                        <arguments>run build</arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
    <!-- <resources> -->
    <!-- <resource> -->
    <!-- <directory>target/frontend</directory> -->
    <!-- <targetPath>static</targetPath> -->
    <!-- </resource> -->
    <!-- </resources> -->
</build>

Я новичок в Springboot, понятия не имею, что я делаю неправильно. Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Внес следующие изменения, и это сработало - 1. Удалил плагин ресурсов maven из pom, вместо этого просто добавив

<resources>
    <resource>
    <directory>target/frontend</directory>
    <targetPath>static</targetPath>
    </resource>
</resources>

, и я смог увидеть всплывающее окно входа в браузер безопасности весной, когда я нажал localhost: 8080 /

0 голосов
/ 21 мая 2018

Попробуй, у меня это нормально работает.

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class TestController {

    @RequestMapping(method = RequestMethod.GET)
    public void getIndex(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String uri = request.getRequestURI();
        String accessResource = "/static/index.html";
        if(uri.contains(".")) { // if css or jpg or font or others
            accessResource = "/static" + uri;
        }
        Resource resource;
        ByteArrayOutputStream bos;
        resource = new ClassPathResource(accessResource, TestController.class);
        bos = new ByteArrayOutputStream();
        FileCopyUtils.copy(resource.getInputStream(), bos);
        response.getOutputStream().write(bos.toByteArray());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...