我们使用Spring REST Docs从测试中生成文档。将应用程序部署到Heroku时,默认情况下会跳过测试,正如我在日志中清楚看到的那样:
-----> Java app detected
-----> Installing JDK 1.8... done
-----> Installing Maven 3.3.9... done
-----> Executing: mvn -DskipTests clean dependency:list install
[INFO] Scanning for projects...
[INFO]
如何自定义由Heroku执行的Maven命令?
答案 0 :(得分:0)
经过一天的搜索,我发现了两种启用Heroku构建测试的可能方法:
pom.xml
中配置Maven Surefire Plugin pom.xml
中的配置在启动Maven进程时会覆盖命令行参数。
您可以通过在Maven Surefire插件配置中禁用-DskipTests
来撤消skipTests
,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>false</skipTests>
</configuration>
</plugin>
请注意,Heroku在运行Maven时会添加环境变量。确保在Spring
test
配置文件中运行时使用内存数据库,否则构建将失败。就我而言,我使用Flyway进行数据库迁移。出于某些奇怪的原因,无论我的
spring.datasource.url
中的application-test.yml
,Flyway都使用了环境变量值。如果您遇到相同的问题,请注意,您也可以使用Maven Surefire插件的argLine
配置属性来覆盖它们。
<argLine>-DDATABASE_URL=jdbc:h2:mem:questflair -DJDBC_DATABASE_URL=jdbc:h2:mem:questflair -DSPRING_DATASOURCE_URL=jdbc:h2:mem:questflair</argLine>
根据Heroku Java Buildpack文档,您可以自定义Maven选项和目标。
我没有尝试此解决方案,请参见Customize Maven,以获取更多信息。