我有一个简单的spring boot项目,其项目结构如下:
project
- backend (spring boot)
- frontend (angular)
我已经配置了项目,因此* IT.java类在maven的集成测试阶段运行,并且它们已经成功地使用H2数据库测试了Spring Boot REST API。
我正在尝试配置项目,以便与浏览器进行交互的黄瓜测试将在项目的集成测试阶段运行。黄瓜测试可以正常启动,但由于简单的原因而失败,因为Spring Boot应用程序启动时角度文件没有得到服务。
在后端/ src / main / resources / static中,我有一个简单的index.html文件。黄瓜测试运行时,他们打开浏览器,我看到了该文件的内容。
在后端模块(war)pom中,我从角度构建中复制dist内容...
<build>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>some.package.Boot</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<warName>${root.context}</warName>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<resources>
<resource>
<directory>../frontend/<appname>/dist/frontend</directory>
<!--<targetPath>src/main/resources/static</targetPath>-->
<targetPath>static</targetPath>
</resource>
</resources>
</build>
在生成的war文件中,角度文件打包到WEB-INF / classes / static /中。
您会从上面注意到,我还尝试过将角度代码复制到资源/静态文件中,但这会将文件放在target / classes / src / main / resources / static中,所以这不是正确的方法! / p>
然而,黄瓜测试在运行时仍然只能从src / main / resources / static中看到index.html文件的内容。
可能我们可以将有角度的应用程序移到与java / webapp代码相同的src树中,但这不是一个选择。
我该如何说服Spring Boot在目标中使用战争,而不是将要发生的事情并从源头提供内容?
版本: Java 11
Maven战争插件3.2.2
在父pom中定义为2.1.3RELEASE的Springboot版本