当我在我的机器(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中的顺序非常重要。
答案 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
解决了这个问题。