我正在我的Java项目中构建一个带有超链接的HTML文件。
// log/file.html path is within the Jenkins workspace directory. $WORKSPACE/log/file.html.
File myFile = new File("log/file.html");
String hyperlink = myFile.getCanonicalPath();
本地 Mac 运行:成功。
html 会生成一个超链接,单击该超链接会将我带到所需的 HTML 页面。
hyperlink value = file:///Users/username/workspace/ProjectName/log/file.html
但是,当我在 Jenkins 上运行 Maven Java 项目时,它失败了。
hyperlink value = file:///Users/Shared/Jenkins/Home/workspace/JobFolderName/JobName/log/file.html
显然,此绝对路径超链接不起作用。当我单击超链接时没有任何反应。
如何更改我的 Java 代码,使其既适用于本地机器运行,也适用于具有工作区相对路径的 Jenkins(无论使用的操作系统 - Windows/Linux/Mac(?
使用类路径资源而不是绝对路径。
假设在 src/main/resources 内部,你创建一个目录"log",并在里面保存你的 html 文件
URL fileUrl = getClass().getResource("log/file.html");
File myFile = new File(fileUrl.getFile());
String hyperlink = myFile.getCanonicalPath();
这对我有用
String hyperlink = "";
File myFile = new File("log/file.html");
if(System.getenv("BUILD_URL") == null) {
hyperlink = myFile.getCanonicalPath();
}
else{
hyperlink = System.getenv("BUILD_URL") + "artifact" + File.separator + "log" + File.separator + "file.html";
}