我的Gradle项目的结构如下:
Project
├── app
└── build.gradle
├── foo
└── bar.txt
·
·
·
└── build.gradle
通常,要获取 foo
文件夹的绝对路径,我只需在根 build.gradle
文件中执行新的文件(“foo”)
即可。
但不幸的是,如果您从项目目录外部运行gradle脚本,例如执行如下操作,则此方法不起作用:
$ trunk/gradlew -b trunk/build.gradle tasks
使用上一个命令,gradle 是在项目的父级中查找 foo
目录,因为我从那里开始编写脚本。
是否有方法获得项目的绝对路径,即构建位置。gradle是,即使您从另一个目录启动脚本?或者有没有其他方法来获取脚本所在文件夹中目录的引用?
我也尝试使用getClass().protectionDomain.codeSource.location.path
,但它正在返回gradle缓存目录的路径。
在构建中。gradle文件只需使用projectDir
来获取构建的绝对路径。渐变文件。从那里,您可以导航项目的文件。请阅读以下内容以了解更多信息:
https://www.tutorialspoint.com/gradle/gradle_build_script.htm
new File('foo')
根据定义(查看它的JavaDoc)创建一个相对于当前工作目录的路径,因此取决于您从何处调用应用程序。如果需要相对于项目文件夹的路径,请使用project。file('foo')
,或者作为project
project是解析方法的默认值,只需file('foo',file('foo')。absolutePath
,您会没事的。
我通过确保JavauserDir
被设置到我的build.gradle
文件顶部的项目目录(即project.projectDir
)来解决这个问题,如下所示:
System.setProperty( "user.dir", project.projectDir.toString() )
println " project dir: "+ System.getProperty("user.dir");
这可以通过执行单独的(Groovy)代码文件来检查,例如:
println "User Dir: ${System.getProperty( 'user.dir' )}"
您可以在使用这些语句之前和之后输出Gradle项目值。
println "Root project: ${project.rootProject}";
println " rootDir: ${project.rootDir}"
println " projectDir: ${project.projectDir}";
println " project dir: ${System.getProperty("user.dir")}";
如果您有子项目,project ectDir
与rootDir
不同。
这并没有解决我的实际问题,但它确保了我打开了正确的文件(相对于build.gradle
的位置)。
嗨,我有两个项目,文件如下: 项目1:构建。格拉德尔 项目2:构建。格拉德尔 当我从Project 1执行test1任务时,我得到以下错误: 正在运行任务测试2 失败:生成失败,出现异常。 > 错误:评估脚本时出现问题。建筑属性(无此类文件或目录) 尝试:使用--stacktrac选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。 建筑失败 总时间:5.779秒
Laravel版本5.6 我正试图通过“自动加载”下的文件将一些类添加到我的项目中。 Composer.json 每当我执行时,两个文件都会出现错误,表示找不到文件。 PHP警告:未捕获错误异常:require(C:\laravel projects\project\vendor\composer/./../app/helpers/dbUsers.PHP):无法打开流:C:\laravel pro
前言 这一篇,我们将接着上篇来完成创建项目文件、目录结构。 回顾 先回顾一下现在项目有哪些东西了: . ├── app │ ├── app.vue │ ├── common │ │ ├── img │ │ ├── js │ │ └── scss │ ├── index.html │ ├── index.js │ ├── router
我正在改变我们的项目,以使用gradle作为构建工具,但正在与2个问题斗争;
我对Gradle是全新的,但在我的Build.Gradle中尝试了以下功能:
我的程序从不是项目根目录的位置读入文档。文档包含一个相对路径。当程序应用该路径时,它确实从项目的根目录开始。如何使其应用来自文档原始位置的路径? 以下是细节。有点长,但很简单。 我在Eclipse中有一个Java项目,位于 该程序运行一个XSL转换,该转换以Schematron模式作为输入,并产生一个新的XSLT样式表作为输出 它包含这一行,还有几条类似的: 如果从模式的位置开始,并应用该相对路径