Ant build.xml需要用户输入,但Eclipse没有tty

我正在尝试更好地将Eclipse与我的build.xml集成。 我的构建文件为程序的本机部分调用GNU Make,而Makefile使用sudo将已编译的库移动到系统路径中。 不幸的是,这需要输入密码,Eclipse的终端不接受用户输入。 所以在eclipse中运行构建的结果是:

[exec] sudo: no tty present and no askpass program specified [exec] make: *** [install] Error 1 

有什么办法绕过这个问题? ant的构建能否以其他方式提升为根?

设置一个单独的帐户,例如部署者 。 修改/etc/sudoers以包含允许部署者以root身份执行单个命令(例如部署)的别名。 让部署者 NOEXEC: . 将部署者密码存储在不可见的文件中,例如.deployconf只具有用户访问权限:例如400600 。 在ant加载密码,并根据需要使用:

这适用于,但我没有尝试使用。 可能需要做一些努力才能将换行符保留在.deployconf之外

您可以设置/ etc / sudoers文件,以便为运行Eclipse的用户指定NOPASSWD:以及用于移动lib的命令。 使用visudo命令,您可以将其添加到/ etc / sudoers的末尾:

 eclipseuser ALL = NOPASSWD: /bin/cp 

请注意,这确实存在安全风险,因为eclipseuser将有权覆盖系统上的任何文件。

也许是一个愚蠢的“解决方案”,但为什么不让部署单独一步呢? 让构建产生包装工件:DEP,RPM或其他东西。