我已经创建了一个实用程序(java jar文件),可以在构建过程中生成一个文件。并将其放入我的源代码根文件夹的/tools
文件夹中。
在azure管道中,我正在使用这种方法在构建项目(Xamarin项目)时运行此jar文件。
- task: CmdLine@2
inputs:
script: "java -jar $(build.SourcesDirectory)/tools/version2image.jar $(fullVersionText) $(androidVersionFileLocation)"
任务启动正常,但是在日志中,我得到以下信息:
2020-08-17T14:48:45.4688112Z java -jar D:\a\1\s/tools/version2image.jar 1.0.0.123 'D:\a\1\s/XamarinProject/XamarinProject.Android/Resources/drawable/version.png' 2020-08-17T14:48:45.5231861Z ========================== Starting Command Output =========================== 2020-08-17T14:48:45.5731945Z ##[command]"C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\a\_temp\d5706f7c-43cd-4d50-8f17-98a6ae0a3391.cmd"" 2020-08-17T14:48:46.8000947Z Version 2 Image Utility. version 1.0 2020-08-17T14:48:46.8001744Z 2020-08-17T14:48:46.8002367Z 2020-08-17T14:48:46.8003059Z Usage: 2020-08-17T14:48:46.8004115Z 2020-08-17T14:48:46.8004468Z java -jar version2image.jar version_string output_file_location 2020-08-17T14:48:46.8004769Z 2020-08-17T14:48:46.8005096Z Example: 2020-08-17T14:48:46.8005464Z 2020-08-17T14:48:46.8005739Z java -jar version2image.jar 1.0.0.121 c:/myproject/images/version.png 2020-08-17T14:48:46.8005961Z 2020-08-17T14:48:46.8507661Z ##[section]Finishing: CmdLine
换句话说,Azure无法将参数正确传递给jar文件。我的应用程序认为它是在没有参数的情况下启动的。
但是当我在计算机上本地运行此实用程序时,它运行正常。
如果有帮助,在Java实用程序中,我将获得如下命令行参数:
final int correctParamsCount = 2;
if (args.length != correctParamsCount) {
System.out.println("Usage:\n\njava -jar version2image.jar <version_string> <output_file_location>\n");
System.out.println("Example:\n\njava -jar version2image.jar 1.0.0.121 c:/myproject/images/version.png\n");
System.exit(0);
}
final String versionNumber = args[0];
final String outputFilePath = args[1];
如何解决此问题?
答案 0 :(得分:1)
要解决此问题(感谢@riQQ),我应该更新AndroidVersionFileLocation
变量,并从路径中删除单引号。
并在实用程序命令调用中添加双引号:
它应该像这样:
script: 'java -jar $(build.SourcesDirectory)/tools/version2image.jar "$(fullVersionText)" "$(androidVersionFileLocation)"'
代替此:
script: "java -jar $(build.SourcesDirectory)/tools/version2image.jar $(fullVersionText) $(androidVersionFileLocation)"