如何使用 Java 获取可以在本地和 Jenkins 上运行的超链接的文件路径?



我正在我的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";
}

相关内容

  • 没有找到相关文章

最新更新