【问题标题】:setting user.dir for gradle app running in eclipse为在 Eclipse 中运行的 gradle 应用程序设置 user.dir
【发布时间】:2017-06-27 15:02:22
【问题描述】:

我有一个前雇员开发的 gradle 应用程序,它使用 ./gradlew 从命令行完美运行。但是现在我尝试在 eclipse 中调试它,所以我开始尝试在 eclipse 中运行它。

我安装了 Buildship Gradle 插件并创建了一个运行配置,该配置指定了工作目录并传递了程序参数。当它尝试访问文件系统中的任何内容时,当应用程序使用 System.getProperty("user.dir") 时,它使用了错误的路径 - 默认为我用户的主目录而不是项目文件夹。

我尝试添加一个“GRADLE_USER_HOME”类路径变量,但它似乎并没有改变任何东西。我也尝试将 Gradle 用户主页(在 Preferences - Gradle 下)设置为项目文件夹,但这也无济于事。我也尝试将 Gradle Distribution 从“From Import Settings”更改为“Gradle Wrapper”,但这没有帮助。

任何帮助将不胜感激!

【问题讨论】:

  • 能否请您重新格式化问题,使其更具“可读性”?
  • 我也使用 gradle 的ProcessBuilder 遇到了这个问题。我尝试从 Eclipse 和命令行中使用 new ProcessBuilder().directory()Paths.get(".").toAbsolutePath()System.getProperty("user.dir") 获取当前目录。在这两种情况下,ProcessBuilder 都返回 null,这意味着它使用 user.dir。在这两种情况下,Paths 都会返回我想要的项目目录。但是 user.dir 是从命令行运行时的项目目录,而在 Eclipse 中运行时是我的主目录。我不知道它是否“正确”,但它破坏了我的 gradle 构建。

标签: eclipse gradle buildship


【解决方案1】:

系统属性user.dir 与 Gradle 无关,我敢打赌它也没有在 Gradle 脚本中设置。系统属性user.dir是用户启动程序时的当前工作目录。因此,如果您在项目目录中并调用./gradlew run,则工作目录就是您的项目目录。如果您上一层并致电<project>/gradlew run,您还会看到与 eclipse 不同的行为。

将运行配置的工作目录设置为您的项目目录,那么您应该获得正确的行为。如果项目依赖于作为项目目录的路径,则可能您应该解决此问题,以便不使用 user.dir

【讨论】:

  • 感谢您的回复。我已经把项目路径放到了 gradle 运行配置的工作目录中。我是否应该使用其他变量来从项目中获取该路径而不是使用 user.dir?当我输出 user.dir 的值时,我看到它只是我的主目录,而不是项目目录。
  • 如果user.dir 不是您设置的工作目录,我只能猜测您错误地设置了 Eclipse 运行配置。我非常不喜欢 Eclipse 并尽可能避免使用它,所以我很难猜出你可能做错了什么。不,没有系统属性可以获取项目目录。您需要通过确定类在运行时或类似情况下的位置来实现一些巧妙的逻辑。
猜你喜欢
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 2019-09-24
  • 1970-01-01
相关资源
最近更新 更多