gpt4 book ai didi

android - 从 perl 脚本运行 gradle

转载 作者:太空狗 更新时间:2023-10-29 12:30:16 28 4
gpt4 key购买 nike

我正在尝试从服务器上的 perl 脚本启动 gradle andrpod apk 构建。我尝试了不同的解决方案,例如:

my $path = Cwd::cwd();
$build_output = `cd $appFolder && ./gradlew assembleRelease | cd $path`;

我试过使用系统和管道打开,但结果是一样的。

当我尝试将它添加到现有脚本时,它不会等待 gradle 构建开始。对系统命令的所有其他调用工作正常,只是 gradle 构建似乎立即退出。

对 gradle 调用可能有什么不同有什么想法吗?

编辑:

重定向 STDERROR 并运行以下命令:

my $build_output = `cd $appFolder && pwd && ./gradlew assembleRelease 2>&1`;
my $err = $? >> 8;
if ($?) {
print LOG "\n\n BUILD ERROR: \n\n$err\n$build_output\n";
} else {
print LOG "\n\n BUILD OUTPUT: \n\n$build_output\n";
}

我收到以下错误:

BUILD ERROR: 
/var/www/html/upload/myApp
1
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: /var/www/.gradle/wrapper/dists/gradle-2.2.1-all/6dibv5rcssdffbq9klf8imrndn/gradle-2.2.1-all.zip.lck (No such file or directory)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:78)
at org.gradle.wrapper.Install.createDist(Install.java:47)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.io.FileNotFoundException: /var/www/.gradle/wrapper/dists/gradle-2.2.1-all/6dibv5rcssdffbq9klf8imrndn/gradle-2.2.1-all.zip.lck (No such file or directory)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:241)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:49)
... 3 more

所以我需要理解为什么它在/var/www 中寻找 .gradle/文件夹而不是我 chdir 进入的文件夹。我尝试将 GRADLE_USER_HOME 变量设置为/usr/local/gradle 但它仍在搜索/var/www/.gradle/。

已解决

它在/var/www 中寻找.gradle 的原因是因为该脚本是由apache 用户启动的。将文件夹移到那里并授予访问权限解决了问题。

最佳答案

您不需要再次返回 chdir - 所有 shell 调用都会打开一个子 shell,您不能从子 shell 影响父环境(或 cwd)。

此外,即使您确实想这样做,您也需要 || 而不是 | 因为否则您会将输出通过管道传输到“cd”几乎肯定不是您想要做的。

所以:

$build_output = `cd $appFolder && ./gradlew assembleRelease`; 

应该做正确的事。

如果没有,我唯一能想到的就是:

  • 它期待连接STDIN。 (解决方法包括 IPC::Open2)。
  • 它正在尝试打开一个窗口,但没有可用的窗口管理器。

编辑

重定向 STDERROR 并运行以下命令:

my $build_output = `cd $appFolder && pwd && ./gradlew assembleRelease 2>&1`;
my $err = $? >> 8;
if ($?) {
print LOG "\n\n BUILD ERROR: \n\n$err\n$build_output\n";
} else {
print LOG "\n\n BUILD OUTPUT: \n\n$build_output\n";
}

我收到以下错误:

BUILD ERROR: 
/var/www/html/upload/myApp
1
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: /var/www/.gradle/wrapper/dists/gradle-2.2.1-all/6dibv5rcssdffbq9klf8imrndn/gradle-2.2.1-all.zip.lck (No such file or directory)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:78)
at org.gradle.wrapper.Install.createDist(Install.java:47)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.io.FileNotFoundException: /var/www/.gradle/wrapper/dists/gradle-2.2.1-all/6dibv5rcssdffbq9klf8imrndn/gradle-2.2.1-all.zip.lck (No such file or directory)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:241)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:49)
... 3 more

所以我需要理解为什么它在/var/www 中寻找 .gradle/文件夹而不是我 chdir 进入的文件夹。可能与GRADLE_USER_HOME变量有关。

关于android - 从 perl 脚本运行 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com