I have the following code to check the last modification on a file saved on network drive.
private long determineLastEdit(ILoaderData file) {
String localDir = "c:\\Software\\log\\";
String localPDF = "empty28.pdf";
String originDir = "smb:\\ProdName\\ShareName\\Temp\\username\\path\\to\\folder\\";
//My company remote storage
File localFile = new File(originDir + localPDF)
//this does not work
//File localFile = new File(localDir + localPDF)
//this works as expected
Date currentTime = new Date();
long timeCurrent = currentTime.getTime();
long timeFile = localFile.lastModified();
//this returns 0 on remote, correct time …
Run Code Online (Sandbox Code Playgroud) 我正在实现声明式 Jenkinsfile,我想运行 Windows 命令并将结果分配给变量。
这是我的代码:
stage('check latest commit') {
steps {
script{
COMMIT = bat("c:\\Software\\Git\\bin\\git.exe log -n 1 --pretty=format:'%%H'").trim() as String
echo "${COMMIT}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在 Jenkins 作业中收到以下日志
c:\Software\JenkinsWorkspace\workspace\TFS - XXX>c:\Software\Git\bin\git.exe log -n 1 --pretty=format:'%H'
'656669102c187fe390a1e9d72ed47aa2d8528ad6'[Pipeline] }
[Pipeline] // script
Run Code Online (Sandbox Code Playgroud)
因此该命令按预期执行并返回 HEAD 中最新提交的哈希值。伟大的。然而:
[Pipeline] End of Pipeline
java.lang.NullPointerException: Cannot invoke method trim() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
Run Code Online (Sandbox Code Playgroud)
在运行结束时,我收到此错误。这意味着命令的结果值为null
,即使命令本身产生结果。
如果我不包括修剪,例如:
stage('check latest commit') {
steps {
script{
COMMIT = bat("c:\\Software\\Git\\bin\\git.exe log -n 1 --pretty=format:'%%H'")
echo "${COMMIT}" …
Run Code Online (Sandbox Code Playgroud)