带有弹簧靴的Swagger在某些机器上构建时可以工作,但在其他机器上则不行

时间:2017-11-23 14:23:14

标签: java maven spring-boot jenkins swagger-ui

当我在我的机器(Linux,Ubuntu 14,Oracle JDK1.8,Maven 3.5.2)上使用swagger构建spring启动应用程序时,它运行的文档非常好。

如果在Windows机器上构建,那么swagger-ui也能正常工作。

当我在Jenkins Build机器上使用swagger构建spring启动应用程序时。 (Linux,Ubuntu 16,Oracle JDK1.8,Maven 3.5.2)应用程序运行正常,但是swagger在swagger-ui,html页面上给出了404:

14:01:28.296 [http-nio-30020-exec-1] WARN  org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/api/v2/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'

这可以通过jenkins和命令行上的mvn clean install运行。

我无法想到Jenkins机器会以不同的方式构建它,但它似乎是!有没有明显我错过的东西?我看到其他人有问题,如果文档是否完全出现,但是在构建精选机器时我还没有看到它正常工作。

[编辑]进一步的测试表明,在Ubuntu 14(32位或64位)上进行全新安装可以正常工作,而在不同的Ubuntu16 64位机器上全新安装java / maven并不起作用。

它也适用于全新的Ubuntu17安装,但不能在新的Ubuntu16安装上运行,并且安装了相同的maven.tar.gz和jdk.tar.gz安装。

如果您解压缩并传播内容,似乎生成的jar文件是相同的。但是,如果你将非功能性文件重新压缩到一个新的jar中,你就可以得到一个有效的文件。

jar文件之间的唯一区别是运行unzip -l .jar时返回的文件的顺序。

因此,似乎将文件添加到jar中的顺序非常重要。

2 个答案:

答案 0 :(得分:0)

我假设您有以下两种依赖:

   0 [object object ]
   1 [object object ]
   2 [object object ]
   3 [object object ]
   4 [object object ]

使用jenkins或使用mvn clean package

构建我的swagger应用程序没有问题

答案 1 :(得分:0)

在我的用户帐户下构建应用程序并在root(sudo)下启动该应用程序时,我遇到了相同的问题。 sudo mvn spring-boot:run解决了这个问题。