java - 在 Gradle 插件中获取资源文件的绝对路径?

标签 java android groovy gradle build.gradle

我有一个带有任务的 Gradle 插件:

@TaskAction
def nyTask() {

  def myFlags = project.pluginConfig.myFlags
  if myFlags == null {
    myFlags = "-arg1 absolutePathToFile/file1.txt -arg2 absolutePathToFile/file2.txt"  
    // *** this is the part I don't know ***
  }

  project.exec { 
     executable aCommand
     args myFlags.split()
  }
} 
myFlags在插件的扩展中定义。使用插件时,我可以像这样配置它:
myPlugin {
  myFlags = "-arg1 absolutePathToFile/file1.txt -arg2 absolutePathToFile/file2.txt"
}

我在插件中有一些默认文件 src/main/resources/文件夹,即
src/main/resources/file1.txt
src/main/resources/file2.txt

如果 myFlags == null然后我想使用资源文件夹中的文件。

问题是我不知道如何获得这些文件的正确路径。

如何获取插件资源文件夹中 file1.txt 和 file2.txt 的绝对路径?

最佳答案

绝对路径可以通过main访问源集 defined在java插件中。

唯一的问题是,通常资源可能有多个源目录,因此在下一个示例中,我将演示如何获取第一个资源目录的绝对路径,在您的情况下,您需要决定如何处理多个资源目录:

  if myFlags == null {
      def resourcesDir = sourceSets.main.resources.srcDirs.first().absolutePath
      myFlags = "-arg1 ${resourcesDir}/file1.txt -arg2 ${resourcesDir}/file2.txt"
  }

关于java - 在 Gradle 插件中获取资源文件的绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959692/

相关文章:

groovy - Jenkins - 动态选择参数 - 从列表中删除文件扩展名

jenkins - Jenkins 管道中的 Artifactory : org. codehaus.groovy.runtime.GStringImpl 无法转换为 java.lang.String

groovy - 所有 Groovy 代码都对 Groovy++ 有效吗?

java - 使用 PDFBox 和 BouncyCaSTLe 签署 PDF

Android:我必须将正在使用的库的许可证放在哪里?

java - Apache HttpClient 获取添加字节范围 header ?

android - 谷歌地图 - distanceTo vs proximity alert vs geofence

java - 汉诺塔 - 简单算法

java - 你将如何在 Swift 中复制这个 Java 公共(public)接口(interface)?

Java Swing 更改图标