我正在尝试构建React应用程序,并将它作为静态资源包含在我的spring引导中。
我使用target/classes/public
将react文件夹复制到我的spring项目的maven-antrun-plugin
中。
我试过两个名字,target/classes/public
和target/classes/static
。
这是执行$mvn package
后的pj/目标/类结构
C:\Users\tlatl\Desktop\pj1\target\classes>tree /F
OS 볼륨에 대한 폴더 경로의 목록입니다.
볼륨 일련 번호는 722D-1A0E입니다.
C:.
│ application.properties
│
├─com
│ └─example
│ └─demo
│ │ DemoApplication.class
│ │
│ ├─controller
│ │ Controller.class
│ │ UrlRestController.class
│ │
│ ├─domain
│ │ Url.class
│ │
│ ├─repository
│ │ UrlRepository.class
│ │
│ └─service
│ UrlService.class
│
└─public
│ asset-manifest.json
│ favicon.ico
│ index.html
│ logo192.png
│ logo512.png
│ manifest.json
│ precache-manifest.5260fb84a466ee86d0bc9ba13f9afc09.js
│ robots.txt
│ service-worker.js
│
└─static
├─css
│ main.500ce7b4.chunk.css
│ main.500ce7b4.chunk.css.map
│
└─js
2.c878f2b2.chunk.js
2.c878f2b2.chunk.js.LICENSE
2.c878f2b2.chunk.js.map
main.1b913fda.chunk.js
main.1b913fda.chunk.js.map
runtime-main.e1737718.js
runtime-main.e1737718.js.map
但是在我执行了得到的jar文件之后,localhost:8080只显示了一个空白页。
在我提到的博客https://blogg.kantega.no/webapp-with-create-react-app-and-spring-boot/中,作者说:
如果将Spring应用程序放在应用程序jar文件的classes/public目录中,则可以提供静态内容。 类路径上公共目录中的任何内容都由默认servlet充当静态资源,因此不需要为此创建MVC控制器。
因此,我没有设置任何带有"/“路径的控制器。我设置的其他rest API在URL中运行良好。
为什么我的spring引导不显示target/classes/public
文件夹中的静态包?
下面是我的pom.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<node.version>v12.3.1</node.version>
<yarn.version>v1.16.0</yarn.version>
</properties>
<dependencies>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.6</version>
<configuration>
<workingDirectory>src/main/frontend</workingDirectory>
<installDirectory>target</installDirectory>
</configuration>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v8.9.4</nodeVersion>
<npmVersion>5.6.0</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<configuration>
<target>
<copy todir="${project.build.directory}/classes/public">
<fileset dir="${project.basedir}/src/main/frontend/build"/>
</copy>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
发布于 2020-01-08 15:33:08
发布于 2020-01-08 15:27:20
我会将它们放在src/resources中,然后Maven构建将它们复制到根文件夹中的应用程序jar中。
发布于 2020-09-02 17:21:54
我读了同一个博客,得到了同样的问题。只需修改maven-antrun-plugin:<copy todir="src/main/resources/static">
中的配置就可以了。
https://stackoverflow.com/questions/59645991
复制相似问题